これを実行する。
$ find . -name \*~ | xargs rm
■背景
ファイル削除のときfindしたファイルを全部削除したい場合、以下のようなコマンドを行っていました。
$ rm `find . -name \*~`
が、kernelだけならまだしもlinuxのビルド環境全体でそのようなコマンドを実行した場合、
findで見つけたパスをrmに渡すことになるため、パスが長いと下記のようなエラーが発生するケースがありました。
めっちゃ時間がかかったあとにぴょこっとエラーになるとへこむ。。。
-bash: /bin/rm: Argument list too long
以下のコマンドを行うと目的が達成されますが、時間がかかりました。(rmコマンドがその都度実行されるため)
$ find . -name \*~ -exec rm {} \;
そして、調べた結果、以下のサイトに行き着きました。
”コマンド実行時の引数の制限を気にしつつ、rmにギリギリの個数のファイル名を渡して、必要最低限の回数だけ実行する。”ため早くなるそうです。
参考:http://openlab.dino.co.jp/2008/02/20/133431188.html
コメント