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