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 rmo <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. -deleteKaldırılacak şeylerin bir listesini almak için olmadan yapın .
-mindepth 1Bir 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 -deleteama anladım illegal option -- mama 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, rmcommand 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. -fKomutu 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 ., -ibu -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)