Yanıtlar:
Güvenli bilgi işlem uygulayın. Basitçe hiyerarşide bir seviye yukarı çıkın ve joker karakter ifadesi kullanmayın:
cd ..; rm -rf -- <dir-to-remove>
İki çizgi --
anlatmak rm
o <dir-to-remove>
bir çizgi ile başlar bile, bir komut satırı seçeneği değildir.
rm ./
, kazara rm . /
felaket olabilecek yazabilirsiniz .
Geçerli olanın altındaki tüm dosyaları / dizinleri siler.
find -mindepth 1 -delete
Adına sahip olduğunuz başka bir dizin için de aynısını yapmak istiyorsanız, bunu isimlendirebilirsiniz.
find <name-of-directory> -mindepth 1 -delete
Yalnızca alt dizinlerini ve dosyalarını değil, aynı zamanda dizinin kendisini de kaldırmak istiyorsanız atlayın -mindepth 1
. -delete
Kaldırılacak şeylerin bir listesini almak için olmadan yapın .
-mindepth 1
Bir dizin ( find <name-of-directory> -mindepth 1 -delete
) belirtiyorsanız ihtiyacınız olacaktır . Aksi takdirde Johannes haklı, mevcut çalışma dizinini (kullanırken find -delete
) silmeyecek .
find -mindepth 1 -delete
ama anladım illegal option -- m
ama zihin derinliği seçeneğini kaldırdığımda harika çalıştıfind . -delete
Her zaman yaptığım şey yazmaktır
rm -rf *
ve sonra ESC- * tuşuna basın ve bash, * öğesini geçerli çalışma dizinindeki dosya ve dizinlerin açık bir listesine genişletir.
Avantajlar:
Aslında, bunu o kadar çok seviyorum ki .bashrc'deki bu satırla onu TAB için varsayılan davranış haline getirdim:
bind TAB:insert-completions
--
Bu cevabın eksik mi? Bu yaklaşım genel olarak harika olduğunu söylemeliyim.
kullanım
rm -rf *
Güncelleme: .
Mevcut dizini ifade eder, ancak bunu kullanamayız. Komut, .
ve için açık kontrollere sahip görünüyor ..
. Bunun yerine genel arama karakterini kullanın. Ancak bu riskli olabilir.
Daha güvenli bir IMO sürümü kullanmaktır:
rm -ri *
(bu, her dosyayı / dizini silmeden önce sizden onay ister.)
rm –rf .
Herhangi bir alt dizinler ve içerikleri de dahil olmak üzere mevcuttaki her şeyi doğrudan kaldıracağı doğrudur . Tek nokta ( .
) geçerli dizini anlamına gelir. yapmak için değil dikkatli olmak rm -rf ..
çünkü çift nokta ( ..
) önceki dizin anlamına gelir.
Bununla birlikte, eğer benim gibiyseniz ve aynı anda birden fazla terminal pencereniz varsa, güvende olsanız iyi olur ve rm -ir .
nedenini anlamak için Komut argümanlarına bakalım.
İlk olarak, rm
command man sayfasına ( man rm
çoğu Unix altında) bakarsanız –r
, "dizinlerin içeriğini özyinelemeli olarak kaldırın" anlamına geldiğini fark edersiniz . Yani, rm -r .
tek başına yapmak , geçerli dizindeki her şeyi ve altındaki her şeyi silecektir.
In rm –rf .
ilave -f yollara "asla istemi, varolmayan dosyaları görmezden". Bu komut, geçerli dizindeki tüm dosyaları ve dizinleri siler ve sizden bunu gerçekten yapmak istediğinizi onaylamanızı asla istemez. -f
Komutu ayrıcalıklı bir kullanıcı altında çalıştırırsanız özellikle tehlikelidir, çünkü herhangi bir dizinin içeriğini gerçekten istediğinizden emin olma şansı olmadan silebilirsiniz.
Öte yandan rm -ri .
, -i
bu -f
"herhangi bir kaldırmadan önce istemi" anlamına gelir. Bu, rm gitmeden tüm dosyalarınızı mutlu bir şekilde silmeden önce "oups! İstediğim bu değil" deme şansınız olacağı anlamına gelir.
İlk sysadmin günlerimde rm -rf /
, tam ayrıcalıklarla (kök) oturum açarken bir sistemde bir sistem yaptım . Sonuç, sistemi yedeklerden geri yüklemek için iki gün geçti. Bu yüzden şimdi istihdam ediyorum rm -ri
.
yapmak emin sen doğru dizinde bulunan
rm -rf *
Bu cevabın daha iyi olduğuna inanıyorum:
/unix/12593/how-to-remove-all-the-files-in-a-directory
En üst düzey dizininiz çağrılırsa
images
, çalıştırınrm -r images/*
. Bu, görüntüler içindeki her dosya veya dizinde*
çalıştırmak için kabuk glob operatörünü kullanırrm -r
.
temelde bir seviye yukarı çıkarsınız ve ardından X dizini içindeki her şeyi sil dersiniz. Bu şekilde, hangi klasörün içeriğinin silinmesi gerektiğini hala belirtiyorsunuz; bu, orijinal klasörü korurken, yalnızca 'buradaki her şeyi sil' demekten daha güvenlidir (bazen izin verilmediği veya istemediğiniz için klasörün mevcut izinlerini değiştirmek için)