Bir dizinden tüm dosyalar nasıl kaldırılır?

202

En yakın olduğum şey

# rm /path/to/directory/*.*

Ancak bu uzantı olmayan dosyalar için çalışmıyor ...

    
sordu user784637 06.09.2011 09:58

9 cevap

231

Linux uzantıları kullanmaz. Dosyanın bir uzantıya sahip olmasını isteyip istemediğine karar vermek, dosyanın yaratıcısına kalmış. Linux, ne tür bir dosya ile uğraştığını anlamak için 1 bayta bakar.

Bir dizindeki her şeyi kaldırmak için:

rm /path/to/directory/*

İçeriği kaldırdığınız dizinin içindeki dizinleri de kaldırmak için -r seçeneğini kullanabilirsiniz. Aksi takdirde, dizinin kaldırılmadığını bildiren bir hata gösterilir.

    
verilen cevap Rinzwind 06.09.2011 10:06
123
  • Klasörü tüm içeriğiyle kaldırmak için ( tüm iç klasörleri içeren ):

    rm -rf /path/to/directory
    
  • klasörünün tüm içeriğini ( tüm iç klasörleri dahil ) kaldırmak için değil, klasörün kendisini kaldırmak için:

    rm -rf /path/to/directory/*
    

    veya

    rm -rf /path/to/directory/{*,.*}
    

    Gizli dosyaların / dizinlerin de kaldırıldığından emin olmak istiyorsanız.

  • Tüm "dosyaları" bir klasörün içinden kaldırmak için ( değil iç klasörleri kaldır ):

    rm -f /path/to/directory/{*,.*}
    

Burada:

  • rm - " kaldır " anlamına gelir.
  • Örneğin, -f - " zorla " anlamına gelir; örneğin, bir arşivi kaldırmak istediğinizde istenip istenmediğinde yardımcı olur.

  • -r - " özyinelemeli " anlamına gelir; bu, her klasörde yinelemeli olarak aşağı gitmek ve her şeyi kaldırmak istediğiniz anlamına gelir.
verilen cevap Lilian A. Moraru 07.09.2011 19:26
29

Dizindeki tüm dosyaları (gizli dosyalar ve alt dizinler dahil) kaldırmak için:

rm -rf /path/to/directory/{*,.*}
    
verilen cevap Leonid V. Fedorenchik 23.11.2014 10:38
7

Yalnızca / path / to / dizinindeki dosyaları silmek isterseniz yapabilirsiniz

find /path/to/directory -type f -print0| xargs -0 rm 

veya

find /path/to/directory -type f -exec rm '{}' \;

find ile yükler yapabilirsiniz, avantajı, rm değerine pipetsiz bulduğunuz şeyi listeleyebilmenizdir, böylece başlamadan önce nelerin silineceğini görebilirsiniz.

    
verilen cevap Richard Holloway 06.09.2011 14:13
6

Ayrıca, tüm alt dizinleri ve dizinin kendisini de kaldırmak isterseniz, rm -rf /path/to/directory 'yi kullanabilirsiniz. Ancak, her zaman geri dönüşü basmadan önce satırınızı iki kez kontrol edin, rm -rf bir sürü havock da verebilir, örn. superuser izinleri verilirken yanlışlıkla ilk boşluktan sonra boşluk eklerseniz ...

    
verilen cevap Tobias Kienzler 07.09.2011 10:51
5

Aşağıdaki deneyebilirsiniz, bir dizinde ( gizli olanlar dahil) tüm dosyaları ve dizinleri silmek için:

  • klasörü silin, ardından yeniden oluşturun

    rm -rf dir_name && mkdir dir_name
    
  • find

    kullanın
    find dir_name -mindepth 1 -delete  
    

Burada dizin DIR_NAME kendisi dışlamak için -mindepth 1 belirtin.

İşte: Aşağıdaki linke bir göz atın

    
verilen cevap zeekvfu 27.11.2013 17:05
1

Dizine cd koyabilir ve daha sonra hatırlamanız durumunda DOS'daki gibi rm *.* komutunu çalıştırabilirsiniz.

    
verilen cevap V K Mavani 01.05.2013 02:59
0

Geçerli dizini silmek için, örneğin rm -d ./*

kullanabilirsiniz.

-d, dizinleri de silmeyi söyler.

    
verilen cevap arviman 29.08.2017 09:17
-1

Bunu sorduğumda, bu soru sürekli olarak Google’ın zirvesindedir:

Diğer cevaplar farklı sorunlardan muzdarip:

  1. Bazıları, . ve .. 'i gürültülü, kafa karıştırıcı ve can sıkıcıdır.

  2. Bazıları gizli dosyaları (nokta ile başlayan dosyalar) unutuyor.

  3. Dizin silinmesine izin vermek için doğru (en derin ilk) bir sırayla silinmez.

  4. Genellikle istenmeyen (istenmeyen) dosya sistemlerine inerler.

  5. Ekstra parametrelerle doğru şekilde genişletmek zordur (daha fazlası için).

Yani, bir dizindeki tüm dosyaları ve klasörleri ALICI olarak silmek için şunu yapın:

find "${DIR}" -xdev -mindepth 1 -printf "%d\t%y\t%p
-not \( -path "${DIR}/subdir" -prune \)
" | sort -z -r -n | cut -z -f3- | xargs -0 -r -- rm -d --

Bağlantılara inmeyi önlemek için -xdev argümanı eklediğimi unutmayın ( /proc vb. gibi).

Neden -depth veya -delete değil?

İnsanların sürekli olarak bunu reddetmesine rağmen, bu yöntemlerin bir dezavantajı vardır: -prune 'in bir alt dizine izin vermek için yeterince genişletilebilir (daha fazla sorun ortaya çıkmadan). Bu yöntemin aksine, ekleyebilirsiniz

%pre% -mindepth öğesinin içeriğinin silinmesini engellemek için subdir argümanından önce

.

    
verilen cevap Mehrdad 21.05.2018 02:54

Etiketlerdeki diğer soruları oku