基本形
$ 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 はカレントディレクトリ (./) を処理しないために入れている。