findを使おう

30分プログラム、その153。findコマンドを、ちゃんと調べてみよう。

検索結果に対してコマンドを実行できる-execが素敵。

find . -name '*~' -exec rm {} \;

とやると、カレントディレクトリ以下のバックアップファイルを削除できる。zshならrm **/*~でできるけど、findのほうが移植性があっていいでしょう。

で、このfindを使って、

  • サイズ0のファイルを削除する
  • ただし、.svnディレクトリ内のファイルは除外する

というシェルスクリプトを書いてみる。

使い方

$ touch a b c

$ ls
a  b  c   D   E 

$ rm-empty

$ ls
D   E

ソースコード

まあ、一行なんですけどね。

#!/bin/sh
find . -size 0 ! -name '*.svn*' -exec rm {} \;