hogehoge foobar Blog Style Beta

Web,Mac,Linux,JavaScript,Perl,PHP,RegExp,Git,Vim,Redmineなど技術的なことのメモや、ちょっと便利そうなものの紹介をしています。

findで空のディレクトリを削除する

たくさんあるディレクトリの中からファイルが一つも無いディレクトリ(いわゆる空ディレクトリ)を削除する方法です。
削除する方法としては、findで空ディレクトリを探して、見つかったディレクトリを削除するという方法になります。

空ディレクトリの検索はfindでファイルタイプを指定(-type d) + 空(0byte)のファイルやディレクトリを検索指定(-empty)をします。*1
ディレクトリ削除については、「xargs」「-exec」「-delete」を使う方法があります。

xargsを使用したサンプル

find . -type d -empty | xargs rm -rf

-execを使用したサンプル

find . -type d -empty -exec rm -rf {} \;

-deleteを使用したサンプル

※「-delete」オプションはBSD系(FreeBSD,Mac OS X等)でのみ使えるようです。

find . -type d -empty -delete

個人的には、「-delete」オプションが使える環境なら「-delete」。
「-delete」が使えないのなら、「-exec」を使うのがスマートかなーと思います。

今回参考にしたページ

Yahoo! 知恵袋 - UNIXで空のディレクトリの一覧を表示するには、どうすればいいですか?
http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q138481003

技術メモ帳 - ■[unix]find の -delete オプション
http://d.hatena.ne.jp/lurker/20060703/1151936124

うまい棒blog - find -execとxargs
http://d.hatena.ne.jp/hogem/20090601/1243862119

*1:solarisでは-emptyオプションが使用できないみたいです。