SOFTELメモ Developer's blog

【linux】 スペースを含むファイル名を find | xargs で使う方法

2015/10/24 linux

問題

find して xargs に渡す方式でコマンドを実行したいのですが、

スペースを含むファイル名があると「そのようなファイルやディレクトリはありません(No such file or directory)」と言われてしまいます。

どうしたらよいですか。

答え

find が -print すると、ファイル名が改行区切りになり、xargs は空白や改行を区切り文字として認識する。

find と xargs の区切り文字をヌル文字にしてやると、空白を含むファイル名が分割されないようになる。

find には -print0 、xargs には -0 または --null を指定する。

例)

find . -name *.log -print0 | xargs -0 grep 'hoge'

findは-print0でヌル文字区切りで出力し、xargsは-0でヌル文字を区切り文字として処理する。

関連するメモ

コメント