SOFTELメモ Developer's blog

会社概要 ブログ 調査依頼 採用情報 ...
技術者募集中

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

問題

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でヌル文字を区切り文字として処理する。

関連するメモ

コメント