-I
置換文字列の指定
$ yes | xargs -I {} echo {}
y
y
-i
gnu のみ。{} を置換文字列として使用すると宣言
$ yes | xargs -i echo {}
y
y
-J
bsd のみ。パイプされた引数を一つの置換文字列にセットする。
$ seq 1 10 | xargs -J {} echo {} no
1 2 3 4 5 6 7 8 9 10 no
-L
$ yes | xargs -L 10 -t
/bin/echo y y y y y y y y y y
y y y y y y y y y y
パイプから一度に、10行受けとる。
-n
$ yes | xargs -n 5 -t
/bin/echo y y y y y
y y y y y
コマンド(ここでは、-t )に一度に与える引数の数を指示する。
-L & -n
$ yes | xargs -L 10 -n 5 -t
/bin/echo y y y y y
y y y y y
受けとるのは 10行でも与えるのは 5行
-P
$ yes | xargs -P 5 -I {} bash -c "echo {} && sleep 1 ;"
y
y
y
y
y
(一休み)
一度に実行するプロセスの数を指定
function を渡したい。
- funciton 定義(当然
.bashrc
に書かれてるなら省略可) export -f func
bash -c "func {}"
スクリプト内ならともかく、ワンライナーで、こんな手間掛けるくらいなら、別の手段考えるわ。