Üç seçenek daha.
Kullanım find
ile -mindepth 1
ve -delete
:
İndemindepth seviyeleri
Düzeylerden daha düşük düzeylerde (negatif olmayan bir tam sayı) herhangi bir test veya eylem uygulamayın.
İndemindepth 1, komut satırı bağımsız değişkenleri dışındaki tüm dosyaları işlemek anlamına gelir.
-delete
Dosyaları sil; kaldırma işlemi başarılı olursa true. Kaldırma işlemi başarısız olduysa bir hata mesajı verilir. Eldelete başarısız olursa, find öğesinin çıkış durumu sıfırdan farklı olur (sonunda çıktığında). Eldelete kullanımı otomatik olarak −depth seçeneğini açar.
Bu seçeneği kullanmadan önce -depth seçeneği ile dikkatlice test edin.
# optimal?
# -xdev don't follow links to other filesystems
find '/target/dir with spaces/' -xdev -mindepth 1 -delete
# Sergey's version
# -xdev don't follow links to other filesystems
# -depth process depth-first not breadth-first
find '/target/dir with spaces/' -xdev -depth -mindepth1 -exec rm -rf {} \;
2. find
Dizinlerle değil dosyalarla kullanın . Bu, aşağıdakileri yapma ihtiyacını ortadan kaldırır rm -rf
:
# delete all the files;
find '/target/dir with spaces/' -type f -exec rm {} \;
# then get all the dirs but parent
find '/target/dir with spaces/' -mindepth 1 -depth -type d -exec rmdir {} \;
# near-equivalent, slightly easier for new users to remember
find '/target/dir with spaces/' -type f -print0 | xargs -0 rm
find '/target/dir with spaces/' -mindepth 1 -depth -type d -print0 | xargs -0 rmdir
3. Devam edin ve üst dizini kaldırın, ancak yeniden oluşturun. Bunu tek bir komutla yapmak için bir bash işlevi oluşturabilirsiniz; İşte basit bir astar:
rm -rf '/target/dir with spaces' ; mkdir '/target/dir with spaces'