En yakın olduğum yer
# rm /path/to/directory/*.*
ancak bu, uzantısı olmayan dosyalar için işe yaramaz...
En yakın olduğum yer
# rm /path/to/directory/*.*
ancak bu, uzantısı olmayan dosyalar için işe yaramaz...
Linux uzantıları kullanmaz. Adın bir uzantıya sahip olması gerekip gerekmediğine karar vermek dosyanın oluşturucusuna bağlıdır. Linux, ne tür bir dosyayla uğraştığını anlamak için ilk birkaç bayta bakar.
Tümünü kaldırmak için gizli olmayan dosyalar* bir dizinde kullanın:
rm /path/to/directory/*
Ancak bu, her alt dizin için bir hata gösterecektir, çünkü bu modda yalnızca dosyaların silinmesine izin verilir.
Bir dizindeki gizli olmayan tüm dosyaları ve alt dizinleri (tüm içerikleriyle birlikte) kaldırmak için:
rm -r /path/to/directory/*
* Gizli dosyalar ve dizinler, adları şunlarla başlayan dizinlerdir: .
(nokta) karakteri, örn.: .hidden-file
veya .hidden-directory/
. Bash'ta, eğer dotglob
seçenek (varsayılan olarak kapalıdır) ayarlandı, rm
dahil olacak çünkü gizli dosyaları da hareket edecektir *
dosya adı bağımsız değişkenlerinin listesini sağlamak için kabuk tarafından genişletilir.
Bir klasörü tüm içeriğiyle (tüm iç klasörler dahil) kaldırmak için:
rm -rf /path/to/directory
Tüm kaldırmak için klasörün içeriği (tüm iç klasörler dahil) ancak klasörün kendisi değil:
rm -rf /path/to/directory/*
veya gizli dosyaların / dizinlerin de kaldırıldığından emin olmak istiyorsanız:
rm -rf /path/to/directory/{*,.*}
Bir klasörün içindeki tüm "dosyaları" kaldırmak için(değil iç klasörleri kaldırma):
rm -f /path/to/directory/{*,.*}
Uyarı: yolunuzda boşluk varsa, her zaman tırnak işaretleri kullandığınızdan emin olun.
rm -rf /path/to the/directory/*
2 ayrı eşdeğerdir rm -rf
arıyor:
rm -rf /path/torm -rf the/directory/*
Bu sorunu önlemek için şunları kullanabilirsiniz '
tek tırnaklar'
(kabuk değişkenlerinin bile tüm açılımlarını engeller) veya "
çift tırnak"
(kabuk değişkenlerinin genişlemesine izin verir, ancak diğer genişlemeleri önler):
rm -rf "/path/to the/directory/"*
Nerede:
rm
- anlamına gelmek kaldırmak
-f
- anlamına gelmek güç bu, örneğin bir arşivi kaldırmak isteyip istemediğiniz sorulmak / sorulmak istemediğinizde yararlıdır.-r
- anlamına gelmek yinelemeli bu, her klasöre yinelemeli olarak gitmek ve her şeyi kaldırmak istediğiniz anlamına gelir.Dizindeki tüm dosyaları kaldırmak için (gizli dosyalar ve alt dizinler dahil) çalıştırın:
rm -rf /path/to/directory/{*,.*}
Tüm dosyaları ve dizinleri silmek için saklı bir dizinde, aşağıdakileri deneyebilirsiniz:
klasörü silin ve yeniden oluşturun
rm -rf dir_name && mkdir dir_name
kullanmak find
find dir_name -mindepth 1 -delete
Burada belirtiyoruz -mindepth 1
dizin dir_name kendisini dışlamak için.
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
Yalnızca / path / to / dizinindeki dosyaları silmek istiyorsanız şunları yapabilirsiniz
find /path/to/directory -type f -print0| xargs -0 rm
veya
find /path/to/directory -type f -exec rm '{}' \;
Yükleri şunlarla yapabilirsiniz find
bunun avantajı, bulunanları borulamadan listeleyebilmenizdir. rm
böylece başlamadan önce nelerin silineceğini görebilirsiniz.
Tüm alt dizinleri ve dizinin kendisini de kaldırmak isterseniz, şunları kullanabilirsiniz rm -rf /path/to/directory
. Ancak return tuşuna basmadan önce hattınızı her zaman iki kez kontrol edin, rm -rf
örneğin, süper kullanıcı izinlerine sahipken ilk eğik çizgiden sonra yanlışlıkla bir boşluk eklerseniz, çok fazla havock'a da neden olabilir...
Bunu kendim aradığımda bu soru sürekli olarak Google'ın en üstünde olduğu için:
Diğer cevaplar farklı sorunlardan muzdarip:
Bunlardan bazıları şunlardır .
ve ..
gürültülü, kafa karıştırıcı ve sinir bozucu.
Bazıları gizli dosyaları unutur (bir nokta ile başlayan dosyalar).
Dizin silinmesine izin vermek için doğru (en derin-ilk) sırayla silmezler.
Genellikle istenmeyen diğer (monte edilmiş) dosya sistemlerine inerler.
Ek parametrelerle düzgün bir şekilde genişletilmeleri 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 --
Bir tane eklediğimi unutmayın -xdev
bağlantılara inmeyi önlemek için argüman (örneğin /proc
vb.).
-depth
veya -delete
?İnsanlar beni bunun için sürekli olarak küçümsemelerine rağmen, bu yöntemlerin bir dezavantajı var: izin verecek kadar genişletilebilir gibi görünmüyor -prune
bir alt dizin oluşturma (daha fazla sorun getirmeden). Bu yöntemin aksine, şunları ekleyebilirsiniz
-not \( -path "${DIR}/subdir" -prune \)
önce -mindepth
hariç tutulacak argüman subdir
içeriğinin silinmesinden.
Yapabilirsin cd
dizine girin ve komutu çalıştırın rm *.*
hatırlarsan dos'taki gibi.
Geçerli dizini silmek için, örneğin şunları kullanabilirsiniz rm -d ./*
-d dizinleri de silmenizi söyler.
Buradaki cevaba bakın, bu, herhangi bir uyarı vermeden ve dizinin kendisini silmeden gizli dosyaları da kaldırabilir ubuntu - Delete contents but not directory in Linux? - Stack Overflow
Gerçek bir cevap eklemek için yeterli itibarım yok, ancak shopt -s dotglob && rm / path / to / directory / *
çözümünü bash’ta kullanırken (shopt -s dotglob && rm / path / to/ directory/*)
(parantez içinde) ‘shopt -s dotglob’ un bu komutun ötesine sızmasını önleyecektir. (Parantezler içerilen komutları bir alt kabukta çalıştırır.)