Katakanlah saya memiliki direktori bernama foo/
. Folder ini termasuk subdirektori. Bagaimana saya bisa menghapus semua direktori kosong dalam satu perintah?
command-line
delete
directory
justingrif
sumber
sumber
rm -rf <directory-name>
. Ini akan menghapus direktori, beserta semua isinya termasuk file dan subdirektori. The-r
pilihan berarti menghapus secara rekursif, sementara-f
berarti perintah tidak meminta sebelum menghapus. Namun, jika Anda ingin diminta sebelum menghapus direktori / file, ganti-f
opsi dengan-i
opsi.stdout
dari satu perintah (misalnyafind
) ke yangstdin
lain (misalnyarm
), bagaimanapun, sangat berhati-hati karena dapat menghapus atau menghapus file / direktori yang Anda tidak ingin menghapus! Untuk informasi lebih lanjut tentang cara melakukan ini, lihatman
halaman untuk masing-masing perintah ini. Agar aman, selalu uji hal-hal seperti itu di direktori sementara sebelum mencoba hal yang nyata.Anda dapat mengambil keuntungan dari
rmdir
penolakan perintah untuk menghapus direktori yang tidak kosong, danfind -depth
opsi untuk melintasi pohon direktori bottom-up:(dan abaikan kesalahan), atau tambahkan
2>/dev/null
untuk benar-benar mengabaikannya.The
-depth
pilihan untukfind
mulai mencari di bawah pohon direktori.rm -rf
akan menghapus semua file di direktori (dan subdirektori, dan ....) DAN semua direktori dan segalanya.sumber
Akan menghapus semua direktori kosong. Ini akan memunculkan kesalahan untuk setiap direktori dan file yang tidak kosong, untuk menghentikan kesalahan dari mengacaukan terminal Anda, gunakan
sumber
rmdir * 2>/dev/null || true
. (Cara find (1) lebih baik untuk skrip tetapi karena alasan lain: karena itu mengekspresikan lebih baik apa yang ingin Anda lakukan.)$HOME
. Dengan seringai jahat.Karena jika Anda hanya ingin menghapus subdirektori langsung dari
foo/
.sumber
Pendekatan python
Ini berfungsi seperti ini:
os.walk()
fungsi untuk berjalan secara rekursif pohon direktori. Pada setiap iterasir
diatur ke folder saat ini yang kita akses,s
berisi daftar direktori di dalamnyar
, danf
akan berisi daftar file di folder itu. Tentu saja jikaf
dans
kosong, kita tahu itur
kosong.empty
, daftar semua direktori yang kosong, berdasarkan evaluasi yang dinyatakan di atas.map()
digunakan untuk melakukanos.rmdir()
pada setiap item dalamempty
daftar. Pemahaman daftar dapat digunakan sebagai alternatif.Sebagai skrip ini akan seperti itu:
sumber
/bin/sh
hanya dan Python sebenarnya bahasa yang lebih elegan daripada keduanya