find
コマンドは、再帰的なファイル システム操作の主要なツールです。-type d
を使用します。 find
を伝える式 ディレクトリのみを見つけることに興味があります(プレーンファイルではありません)。 find
の GNU バージョン -empty
をサポート テスト、だから
$ find . -type d -empty -print
現在のディレクトリの下にあるすべての空のディレクトリを出力します。
find ~ -…
を使用 または find "$HOME" -…
ホーム ディレクトリに基づいて検索します (現在のディレクトリでない場合)。
これが正しいディレクトリを選択していることを確認したら、 -delete
を使用します すべての一致を削除するには:
$ find . -type d -empty -delete
rmdir
を呼び出すことができます rmdir
以降、すべてのディレクトリで ディレクトリが空の場合にのみディレクトリを削除します:
find "$HOME" -type d -exec rmdir {} + 2>/dev/null
削除されるディレクトリも印刷したい場合は、それらが空かどうかを確認する必要があります:
find "$HOME" -type d -exec bash -c 'shopt -s nullglob; shopt -s dotglob; files=("$1"/*); [[ ${files[@]} ]] || rmdir -v "$1"' -- {} \;
これは純粋な bash の例です (バージョン 4 以降):
shopt -s globstar
for dir in **/; do
files=("$dir"/*)
[[ ${files[@]} ]] || rmdir -v "$dir"
done