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

railsはほっとくと大量のディレクトリとファイルをtmp/cachesの下に作るんでファイルだけは30日程度で消してました。これでファイルはすっきりするんですがこのファイルは123/456のような3文字/3文字のディレクトリを掘ってその下にファイルを置いてるため空のディレクトリも大量に存在してることに気がつきました。これが大量にあるとゴミ掃除が遅い・・というわけで空のディレクトリを削除する方法です

find . -type d -empty -print -exec rmdir {} \;

-emptyとか便利なオプションがあるんですね・・しかしこれだとディレクトリを削除したあとにそのディレクトリを辿ろうとするので

find: ./E0D/C70: No such file or directory

とか出てしまいます。

depth firstアルゴリズムにするのがおすすめ

 find -d . -type d -empty -print -exec rmdir {} \;

これですっきり

inodeを2%くらい減らす効果はあったようで

 

 

Posted by issei

カテゴリ: BSD