xargs の使い方
入力をコマンドの引数にする
書き方
xargs [-I {}] コマンドパイプで受け取った一覧を、別のコマンドの引数として渡します。
よく使うオプション
| オプション | 意味 |
|---|---|
-I {} | 受け取った 1 行ずつを {} の場所に入れて実行する |
-n 数 | 1 回のコマンドに渡す引数の数 |
-0 | 区切りを NUL 文字にする(find -print0 と組み合わせ、空白のある名前を正しく扱う) |
-r | 入力が空のときはコマンドを実行しない |
例
$ find . -name '*.tmp' | xargs rm
見つけたファイルの一覧を rm の引数として渡し、まとめて消します。
$ find . -name '*.log' -print0 | xargs -0 gzip
名前に空白があっても正しく渡せる形で、ログを圧縮します。
$ cat hosts.txt | xargs -I {} ping -c 1 {}ファイルに書いたホストに、1 台ずつ ping を打ちます。
よくある間違い・注意
- 名前に空白のあるファイルは、xargs が別々の引数に分けてしまいます。find -print0 と xargs -0 を組み合わせます。
実際に打って練習する
Linux レベル1 コースの Lv27「流れを引数に xargs」で覚えます(第2章 宝探し(検索とテキスト処理))。ブラウザの中のシミュレーターで、本物と同じように打って確かめられます。
Lv1〜16 は、登録不要・無料で遊べます(それより先はブロンズ以上のプランで遊べます)。