Daftar direktori bersarang-pertama.
find . -depth -type d -exec rmdir {} \; 2>/dev/null
(Perhatikan bahwa pengalihan berlaku untuk findperintah secara keseluruhan, tidak hanya untuk rmdir. Mengarahkan hanya untuk rmdirakan menyebabkan perlambatan yang signifikan karena Anda harus meminta shell perantara.)
Anda dapat menghindari menjalankan rmdirdirektori yang tidak kosong dengan melewati -emptypredikat 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 rmdirdoa. 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 -emptydengan metode untuk mengelompokkan doa, karena direktori yang hanya berisi direktori kosong tidak kosong pada saat findmelihatnya.
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 /^Fcocok direktori kosong. Direktori yang hanya berisi direktori kosong tidak dapat dicocokkan dengan mudah.
while rmdir **/*(/N^F); do :; done
(Ini berakhir ketika rmdirmenerima baris perintah kosong.)