Linux・シェル4 択難易度 標準

次のコマンドでの xargs の役割は?

find . -name "*.tmp" | xargs rm

正答

  1. find の結果を 1 行ずつ画面に表示してから rm を実行する
  2. rm の実行前に 1 件ずつ削除してよいか確認する
  3. 標準入力から受け取ったパスを rm の引数として並べて実行する
  4. find の結果を rm の標準入力として渡す

解説

rm のようにファイル名を引数として受け取るコマンドは、標準入力を読まない。そのため find の結果をパイプで直接 rm に渡しても何も起きず、xargs が間に入って受け取った行を引数に並べて rm a.tmp b.tmp ... の形で実行する。選択肢 4 は xargs を使わなかった場合の説明に近い。空白を含むファイル名で壊れないようにするには find -print0 | xargs -0 を使う。確認を挟むのは xargs -p というオプションで、既定では確認しない。

参考: man7.org

xargspipefind

この問題を含む Linux・シェル のテストを制限時間つきで解く

Linux・シェルクイズへ