En yakın aldığım
# rm /path/to/directory/*.*
ancak bu, uzantısı olmayan dosyalar için işe yaramaz ...
En yakın aldığım
# rm /path/to/directory/*.*
ancak bu, uzantısı olmayan dosyalar için işe yaramaz ...
Yanıtlar:
Linux, uzantıları kullanmaz. Adın bir uzantısı olmasını isteyip istemediğine karar vermek, dosyanın yaratıcısına bağlıdır. Linux nasıl bir dosya ile uğraştığını bulmak için 1. bayta bakar.
Bir dizindeki her şeyi kaldırmak için şunu kullanın:
rm /path/to/directory/*
Bu -rseçeneği kullanabilirsiniz, örneğin:
rm -r /path/to/directory/*
ayrıca, içeriğini kaldırmakta olduğunuz dizinin içindeki tüm alt dizinleri (tüm içerikleriyle birlikte) kaldırmak için. Aksi takdirde, dizini kaldırmadığını bildiren bir hata gösterecektir.
all files,;) *.*.
*a*sıfır veya daha fazla karakter, ardından sıfır veya daha fazla karakter anlamına gelir a. Bu dosya maç olacağını happy, apple, aveya la.
Klasörü tüm içeriği ile birlikte kaldırmak için ( tüm iç klasörler dahil ):
rm -rf /path/to/directory
Klasörün tüm içeriğini kaldırmak için ( tüm iç klasörler dahil ), ancak klasörün kendisini değil:
rm -rf /path/to/directory/*
veya
rm -rf /path/to/directory/{*,.*}
Gizli dosyaların / dizinlerin de kaldırıldığından emin olmak istiyorsanız.
Bir klasördeki (içeriden tüm "dosyalar" kaldırmak için değil iç klasörleri kaldırarak ):
rm -f /path/to/directory/{*,.*}
Uyarı : Yolunuzda boşluklar varsa, daima tırnak kullandığınızdan emin olun.
rm -rf /path/to the/directory/*
2 ayrı rm -rfçağrıya eşittir :
rm -rf /path/to
rm -rf the/directory/*
Bu sorunu önlemek için, 'tekli tırnak '( kabuk değişkenlerini genişletmez ) veya "çift tırnaklı "( kabuk değişkenlerini genişletir ) kullanabilirsiniz:
rm -rf "/path/to the/directory/"*
Nerede:
rm- " kaldır " anlamına gelir-f- örneğin bir arşivi kaldırmak isteyip istemediğiniz sorulduğunda yardımcı olacak " kuvvet " anlamına gelir .-r- " özyinelemeli " anlamına gelir; bu, her klasörde özyinelemeli olarak aşağı inip her şeyi kaldırmak istediğiniz anlamına gelir.rm -rf /path/to/directory/*örn .htaccess. klasördeki gizli bir dosyayı kaldırmaz . Belki rm -rf /path/to/directory/.? Denemedim.
rm -rf /path/to/directory/.*sadece belirtilen dizindeki gizli dosyaları siler. Gizli dosyaları silmek için çalıştırmadan shopt -s dotglobönce @ danjjl'in @ Rinzwind'in cevabı hakkındaki yorumuna bakın rm -rf /path/to/directory/*.
rm -rf /path/to/directory/.*sistemimde öğelerin silinmesine neden oldu /path/to. Neyse ki, verilerimin tamamını ayrı bir diske yedekledim. Söylemeye gerek yok rm -rf /path/to/directory/.*, tüm bilgisayarınızı ayrı / güvenli bir yere yedeklemediğiniz sürece komutu vermeyin!
Dizindeki tüm dosyaları kaldırmak için (gizli dosyalar ve alt dizinler dahil) çalıştırın:
rm -rf /path/to/directory/{*,.*}
./ve ../yine de gizli dosyaları siler.
rm -r $(pwd)/{*,.*}
Yalnızca / path / to / dizinindeki dosyaları silmek isterseniz,
find /path/to/directory -type f -print0| xargs -0 rm
veya
find /path/to/directory -type f -exec rm '{}' \;
Yüklemeyle yapabilirsiniz find, avantajı, borulamadan bulunanları listeleyebilmenizdir, rmböylece başlamadan önce silinecekleri görebilirsiniz.
GNU findbir -deleteöngörü olarak. Hala kullanmak isterseniz -exec, ikame \;ile +bir araya gelecek rmverimliliğin artırılması, birlikte aramaları.
Bir dizindeki tüm dosyaları ve dizinleri ( gizli olanlar dahil ) silmek için aşağıdakileri deneyebilirsiniz:
klasörü silin, sonra yeniden oluşturun
rm -rf dir_name && mkdir dir_name
kullanım find
find dir_name -mindepth 1 -delete
Burada -mindepth 1dir_name dizininin kendisini dışlamayı belirledik.
Aşağıdaki bağlantıya bir göz atın:
https://unix.stackexchange.com/questions/12593/how-to-remove-all-the-files-in-a-directory
Ayrıca tüm alt dizinleri ve dizinin kendisini de silmek istiyorsanız, kullanabilirsiniz rm -rf /path/to/directory. Ancak, geri dönüşe basmadan önce hattınızı her zaman iki kez kontrol edin, rm -rfaynı zamanda çok fazla hataya da neden olabilir, örneğin, süper kullanıcı izinlerine sahipken ilk eğik çizgiden sonra yanlışlıkla bir boşluk yerleştirirseniz ...
Bu soruyu kendim aradığımda bu soru sürekli Google’ın tepesinde olduğundan:
Diğer cevaplar farklı sorunlardan muzdarip:
Bunlardan bazıları şunlardır .ve ..gürültülü kafa karıştırıcı ve can sıkıcı olan.
Bazıları gizli dosyaları unutur (nokta ile başlayan dosyalar).
Dizinin silinmesine izin vermek için doğru (en derin ilk) sırada silmezler.
Genellikle istenmeyen diğer (monte edilmiş) dosya sistemlerine inerler.
Ekstra parametrelerle düzgün şekilde genişletmek zordur (aşağıda daha fazlası).
find "${DIR}" -xdev -mindepth 1 -printf "%d\t%y\t%p\0" | sort -z -r -n | cut -z -f3- | xargs -0 -r -- rm -d --
Unutmayın, -xdevbağlara ( /procvb. Gibi) düşmesini önlemek için bir argüman eklediğimi unutmayın .
-depthya -delete?İnsanlar bunun için beni sürekli oyluyor olsa da, bu yöntemlerin bir dezavantajı var: -prunebir alt dizine izin verecek kadar genişletilebilir görünmüyor (daha fazla sorun ortaya koymadan). Bu yönteme zıt olarak,
-not \( -path "${DIR}/subdir" -prune \)
-mindepthargümanından önce subdiriçeriğinin silinmesini engellemek için.
-depthbayrak findvar.
-deleteilefind ? -deletederinlik ilk. Zaten findile POSIX olmadığını varsayıyorsunuz -printf, bu yüzden de kullanabilirsiniz -deleteya da-depth -print0 | xargs -0 rm
-not \( -path "$DIR/subdir" \)... ama benimki çalışıyor mu? Neden?
shopt -s dotglobönce çalıştırılan gizli dosyaları da silmek istersenizrm (...)