トップ «前の日記(2008-05-15) 最新 次の日記(2008-05-18)» 編集

Ussy Diary


2008-05-16

[Linux][Shell]指定したファイル以外を削除する

カレントディレクトリにある *.zip 以外を削除する。

$ find . -maxdepth 1 ! -name "*.zip" -print0 | xargs -0 rm 2> /dev/null

maxdepth オプションで階層をカレントディレクトリのみ対象にして、 ディレクトリの中は探索しないようにできた。そしてエクスクラメーションで否定になるのかあ。 Manpage of FIND

あとカレントディレクトリ含めディレクトリ削除でエラーメッセージが出るのが気になるので抑制。

[追記] -mindepth をつけてあげることでカレントディレクトリを対象から外せた。

$ find . -mindepth 1 -maxdepth 1 ! -name "*.zip" -print0 | xargs -0 rm

[/追記]

rm -r で再帰にすればカレントディレクトリを含めたディレクトリも対象になるけど、 あんまり調子に乗ると痛い目をみそうなので慎重に。サーバ側の処理を行うように なってシェルに触れる機会が増えてきたけどコマンドひとつみても面白いなあ。