Daftar direktori bersarang-pertama.
find . -depth -type d -exec rmdir {} \; 2>/dev/null
(Perhatikan bahwa pengalihan berlaku untuk find
perintah secara keseluruhan, tidak hanya untuk rmdir
. Mengarahkan hanya untuk rmdir
akan menyebabkan perlambatan yang signifikan karena Anda harus meminta shell perantara.)
Anda dapat menghindari menjalankan rmdir
direktori yang tidak kosong dengan melewati -empty
predikat untuk menemukannya. GNU menemukan menguji direktori ketika hendak menjalankan perintah, sehingga direktori yang baru saja dikosongkan akan diambil.
find . -depth -type d -empty -exec rmdir {} \;
Cara lain untuk mempercepat adalah mengelompokkan rmdir
doa. Keduanya cenderung lebih cepat dari aslinya, terutama di bawah Cygwin. Saya tidak berharap banyak perbedaan antara keduanya.
find . -depth -type d -print0 | xargs -0 rmdir 2>/dev/null
find . -depth -type d -exec rmdir {} + 2>/dev/null
Metode mana yang lebih cepat tergantung pada berapa banyak direktori kosong yang Anda miliki. Anda tidak dapat menggabungkan -empty
dengan metode untuk mengelompokkan doa, karena direktori yang hanya berisi direktori kosong tidak kosong pada saat find
melihatnya.
Metode lain adalah dengan menjalankan beberapa lintasan. Apakah ini lebih cepat tergantung pada banyak hal, termasuk apakah seluruh hierarki direktori dapat tetap ada di cache disk antara proses find
.
while [ -n "$(find . -depth -type d -empty -print -exec rmdir {} +)" ]; do :; done
Atau, gunakan zsh. The kualifikasi gumpal F
cocok direktori yang tidak kosong, sehingga /^F
cocok direktori kosong. Direktori yang hanya berisi direktori kosong tidak dapat dicocokkan dengan mudah.
while rmdir **/*(/N^F); do :; done
(Ini berakhir ketika rmdir
menerima baris perintah kosong.)