Kenichi Maehashi's Blog
脳内コアダンプ

find | xargs するときに、ファイル名に空白が入っていると危険、というお話
Sunday | July 12, 2009
ずっと前に void GraphicWizardsLair( void ); // さんが いまどきfindとxargsを使う時は-print0と-0を忘れずに というエントリを書かれていたのを読んでいたのですが、実例が無くて一瞬悩んだので、今更ですが備忘録として。

例 1:
$ touch "foo" "bar" "foo bar"
$ find . -name "foo bar" | xargs rm
例 2:
$ touch "foo" "bar" "foo bar"
$ find . -name "foo bar" -print0 | xargs -0 rm
どちらも "foo" "bar" "foo bar" という 3 つのファイルがあって、"foo bar" だけ消そうという意図で書かれたものですが、前者の場合は "foo" と "bar" が消えて "foo bar" が残ります。

まぁ、find . -exec rm {} + かな。find . | perl -nle unlink というのも高速らしいけど、
$ find . -print0 | perl -n0le unlink
の方が安全な気がする。
コメント (0)
コメント


<< 前ページ[1]

トップページに戻る
Copyright © 2006-2021 Kenichi Maehashi, All Rights Reserved.