基本形
$ COMMAND1 | xargs OPTION COMMAND2
OPTION | 説明 |
---|---|
-L | COMMAND2 に与える引数の最大数 (改行までを 1 データとみなす) |
-n | COMMAND2 に与える引数の最大数 (whitespace までを 1 データとみなす) |
-P | COMMAND2 で同時に実行する最大数 (並列処理) |
-I (アイ) | COMMAND2 に与える引数を指定した文字列で指定 (この場合、-L オプションは無視され、引数は 1 つずつ処理される) |
-0 (ゼロ) | COMMAND1 で得られたデータを null 文字で区切られたものとして処理する |
seq
で生成した 1〜10 の数字を 3 個ずつ改行しながら表示 (echo
) する。$ seq 1 10 | xargs -L 3 echo 1 2 3 4 5 6 7 8 9 10 $ seq -s ' ' 1 10 | xargs -n 3 echo 1 2 3 4 5 6 7 8 9 10
MOVE_TO
) に移動させる (通常のmv * MOVE_TO
で argument list too long
というエラーが出る場合)$ find . -type f -print0 | xargs -I XXX -0 mv XXX MOVE_TO
mv
コマンド内の引数の位置を指定したいため、find で得られたそれぞれのファイルパスは -I
オプションで mv
コマンド内の XXX
に渡すと指定している (-I
オプションがない場合は、MOVE_TO
が指定できない)。$ find . -maxdepth 1 -mindepth 1 -type d -print0 | xargs -0 -P 4 -I XXX zip -r XXX.zip XXX
maxdepth
はサブディレクトリを処理しないために入れている。mindepth
はカレントディレクトリ (./
) を処理しないために入れている。