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 -r
seç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
, a
veya 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, rm
böylece başlamadan önce silinecekleri görebilirsiniz.
GNU find
bir -delete
öngörü olarak. Hala kullanmak isterseniz -exec
, ikame \;
ile +
bir araya gelecek rm
verimliliğ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 1
dir_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 -rf
aynı 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, -xdev
bağlara ( /proc
vb. Gibi) düşmesini önlemek için bir argüman eklediğimi unutmayın .
-depth
ya -delete
?İnsanlar bunun için beni sürekli oyluyor olsa da, bu yöntemlerin bir dezavantajı var: -prune
bir 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 \)
-mindepth
argümanından önce subdir
içeriğinin silinmesini engellemek için.
-depth
bayrak find
var.
-delete
ilefind
? -delete
derinlik ilk. Zaten find
ile POSIX olmadığını varsayıyorsunuz -printf
, bu yüzden de kullanabilirsiniz -delete
ya 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 (...)