find
perintah adalah alat utama untuk operasi sistem file rekursif. Gunakan -type d
ekspresi untuk memberi tahu find
Anda hanya tertarik untuk menemukan direktori (dan bukan file biasa). Versi GNU dari find
mendukung -empty
tes, jadi
$ find . -type d -empty -print
akan mencetak semua direktori kosong di bawah direktori Anda saat ini.
Gunakan find ~ -…
atau find "$HOME" -…
untuk mendasarkan pencarian pada direktori home Anda (jika itu bukan direktori Anda saat ini).
Setelah Anda memverifikasi bahwa ini memilih direktori yang benar, gunakan -delete
untuk menghapus semua kecocokan:
$ find . -type d -empty -delete
Anda dapat menghubungi rmdir
di setiap direktori, sejak rmdir
hanya akan menghapus direktori jika kosong:
find "$HOME" -type d -exec rmdir {} + 2>/dev/null
Jika Anda juga ingin mencetak direktori yang dihapus, Anda perlu memeriksa apakah direktori tersebut kosong:
find "$HOME" -type d -exec bash -c 'shopt -s nullglob; shopt -s dotglob; files=("$1"/*); [[ ${files[@]} ]] || rmdir -v "$1"' -- {} \;
Ini adalah contoh bash murni (versi 4 atau lebih tinggi):
shopt -s globstar
for dir in **/; do
files=("$dir"/*)
[[ ${files[@]} ]] || rmdir -v "$dir"
done