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

提供: Linux入門
移動: 案内検索
スポンサーリンク

Unix の find コマンドは、ファイルやディレクトリを探す便利なコマンドです。 find には、いろいろなオプションがありますが、空のディレクトリを削除する機能もあります。

読み方

find
ふぁいんど

概要

自分で1つ1つのディレクトリを空であること確認して、ディレクトリを rmdir で削除するよりも、 find でサクっと空のディレクトリを削除することができます。

ディレクトリを見つける方法

ディレクトリを見つける方法は、 type オプションでディレクトリを指定するだけです。

find . -type d

空のディレクトリを見つける方法

空のディレクトリを見つける場合には、type オプションでディレクトリを指定し、 empty オプションをつけます。

find . -type d -empty

空のディレクトリを削除する方法

find で空のディレクトリを削除する方法は、空のディレクトリを見つけるオプションに加えて、削除するオプションを指定します。

OSのfindコマンドによっては -delete オプションがないかもしれませんが、FreeBSD, Mac , WSLのUbuntuなどの find では以下のコマンドで 空のディレクトリを削除できます。

find . -type d -empty -delete

上記以外の方法では exec オプションや パイプで xargs + rm を組み合わせるといった手法が考えられます。

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

xargs を使う場合には find の -print0 オプションを併用することで、スペースが含まれるファイル名(ディレクトリ名)でも正しく削除を実行できます。

find . -type -d -empty -print0 | xargs -0 rmdir

関連項目




スポンサーリンク