Misalkan saya memiliki pohon dir seperti ini:
ROOTDIR
└--SUBDIR1
└----SUBDIR2
└----SUBDIR3
Saya mencari perintah sehingga ketika saya input:
$ [unknown command] ROOTDIR
Keseluruhan dir tree dapat dihapus jika tidak ada file tetapi hanya dir di dalam keseluruhan tree . Namun, katakan jika ada file bernama hello.pdf di bawah SUBDIR1:
ROOTDIR
└--SUBDIR1
└--hello.pdf
└----SUBDIR2
└----SUBDIR3
Maka perintah hanya harus menghapus SUBDIR2 dan di bawah.
Jawaban:
Alexis dekat. Yang perlu Anda lakukan adalah ini:
Yang pertama akan menelusuri pohon direktori sampai menemukan direktori kosong pertama, lalu hapus. Dengan demikian membuat direktori induk kosong yang kemudian akan dihapus, dll. Ini akan menghasilkan efek yang diinginkan (saya melakukan ini mungkin 10 kali seminggu, jadi saya cukup yakin itu benar). :-)
sumber
-depth
opsi perlu?find . -type d -empty -exec rmdir "{}" \;
juga harus bekerja .... kan?foo/bar/baz
. Kecuali Anda menggunakan-depth
, itu akan mencoba untuk menghapusfoo
terlebih dahulu, gagal, dan Anda akan berakhir denganfoo/bar
setelah berjalan.+
alih-alih;
agar Anda menghapus direktori. Karena Anda melakukannya dengan mendalam-pertama-tama anak-anak masih akan dihapus sebelum orang tua (mungkin tergantung pada versi rmdir / bash Anda dan bergantung pada rmdir tidak menghapus direktori kosong). Ini bekerja untuk saya di pesta di cygwin:mkdir -p a/b/c/d ; find a -depth -type d -exec rmdir {} +
sama dengan
tetapi menggunakan aksi "-delete" bawaan.
Perhatikan bahwa "-hapus" menyiratkan "-depth".
sumber
Saya akan mencoba ini:
sumber
Berikut adalah beberapa persyaratan sebelum kami dapat melakukannya dengan aman:
Inilah cara saya melakukan itu di shell:
Jika Anda tidak keberatan dengan beberapa kesalahan yang berlebihan maka Anda bisa memaksa menghapus semua direktori dengan orang tua dan Anda tidak perlu melakukan penyortiran (Anda tidak dapat mengurutkan string yang diakhiri NUL yang menambahkan perlu tr)
sumber
-empty -delete
opsifind
dalam jawaban @ go2null.sumber
find
karenafind
memiliki cara untuk melakukan pengolahan bersih:find … -exec
.Saya akan melakukan ini:
sumber