Unix :: コマンド / xargs

コマンド説明
xargs標準入力でリストを受け取り、単一の引数に分割して各引数に対しコマンドを実行する



条件にヒットしたファイルを ~/backup にコピーする

% find . -name '*.php' | xargs -i cp {} ~/backup
-i : {} を引数リストに置き換える


条件にヒットしたファイルを削除

% find . -type f -name '*.bak' -print0 | xargs -0 rm
find -print0
ファイル名をフルパスで標準出力に表示し、各ファイル名にNULL文字を付加する。
このオプションは最後に付ける。

xargs -0, --null

標準入力からの文字列の区切りに、空白ではなくヌル文字が使われているとみなす。
また引用符やバックスラッシュに特別の意味を持たせず、すべての文字をそのまま用いる。
ファイル終了文字列も無効となり、他の文字列と同じように扱われる。
入力される文字列に空白・引用符・バックスラッシュが含まれている場合に有用である。
find の -print0 オプションと xargs の -0 オプションを指定することで、ファイル名に改行やスペースが混入しているファイルでも正しく削除できる。


入力を受け取らなかったときにコマンドを実行しない

% find baddir | xargs -r grep 'hoge'
-r : 入力を受け取らなかったときにコマンドを実行しない
unix/command/xargs.txt