xargsで-iオプションと-n1オプションが共存できない?
xargsの-nオプションは一つずつコマンドを実行するときに有利。
$ ls .| xargs -i echo cp {} {}.txt cp a a.txt cp b b.txt cp c c.txt cp d d.txt cp e e.txt
改行が入ったデータの場合には別のコマンドとして起動されるのだがls->echoにすると全てがechoに回されてしまう。
そこで -n1と-iを組み合わせようとすると-nオプションが動かなくなる。
理由がわからない。
$ touch a b c d e $ echo * | xargs echo a b c d e $ echo * | xargs echo {} {} a b c d e $ echo * | xargs -i echo {} a b c d e $ echo * |sed 's/ /\n/'| xargs -i echo {} a b c d e $ echo * |sed 's/ /\n/g'| xargs -i echo {} a b c d e $ echo * | xargs -n1 echo a b c d e $ echo * | xargs -n1 -i echo {} a b c d e
デリミタの問題かと思って-d" "をやってみると改行をデリミタにしなくなる。
$ echo * | xargs -d" " -i echo {} a b c d e