xargs

テキスト処理

書き方

[cmd] | xargs [cmd2]

入ってきた行を別の命令の引数に変えて渡します。名前に空白があると壊れるので、find -print0 と xargs -0 を組ませます。

よく使うオプション

オプション意味
-nHow many arguments to hand over per run
-IPut the argument where a placeholder such as {} sits
-0Read NUL-separated input, to pair with find -print0
-PRun that many copies at once
-rDo not run the command at all on empty input
-tPrint each command before running it

find . -name '*.log' -print0 | xargs -0 rm

Deletes them even when names hold spaces.

xargs -n1 -P4 curl -O < urls.txt

Four downloads at a time.

ls *.txt | xargs -I{} mv {} old/{}

Uses {} where the file name goes.

パイプでつないで使うのが本来の形です。ひとつで全部やるより、三つつないだ方が短くなります。

読み方

  • 角括弧 [ ] は省いてよい部分です。
  • 三点 … は複数並べられるという意味です。
  • オプションは大文字小文字を区別します — -r と -R が別物のコマンドもあります。

よくある質問

Q. xargs は何をしますか。

入ってきた行を別の命令の引数に変えて渡します。名前に空白があると壊れるので、find -print0 と xargs -0 を組ませます。

Q. どう打ちますか。

[cmd] | xargs [cmd2] — 角括弧は省いてよい部分です。

Q. よく使うオプションはいくつですか。

ここにまとめたのは6個です。全部は man xargs にあります。このコマンドはテキスト処理の仲間です。

関連するコマンド

man ページ: man xargs