xargsって標準入力の最後に引数を渡すだけだと思っていたが、テンプレート的に渡してcpとかmvとかlnとかに渡すことができるのか
ls /etc/*.conf | xargs -I % cp % /path/to/destdir
-Iで指定した文字列(%)が標準入力のものに置き換わる。これは一件ずつ実行されるらしい
$ ls /etc/*.conf | xargs -I % echo % /etc/adduser.conf /etc/blkid.conf /etc/ca-certificates.conf /etc/colord.conf /etc/ddclient.conf /etc/debconf.conf
MacOSXだと-Jオプションで標準入力から複数行読み取ることができる
$ ls /etc/*.conf | xargs -J % echo % /etc/asl.conf /etc/autofs.conf /etc/dnsextd.conf /etc/ftpd.conf /etc/ip6addrctl.conf /etc/kern_loader.conf /etc/man.conf /etc/newsyslog.conf /etc/nfs.conf /etc/notify.conf /etc/ntp-restrict.conf /etc/ntp.conf /etc/ntp_opendirectory.conf /etc/pf.conf /etc/resolv.conf@ /etc/rtadvd.conf /etc/syslog.conf
-Iオプションの場合、置換文字列はコマンドライン上に複数回書けるので、以下のように別名にコピーとかもできる。
$ ls /etc/*.conf | xargs -I % cp % %.old