it-swarm-tr.com

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

Bir dizindeki tüm dosyaları ve alt dizinleri kaldırmaya çalışıyorum. Tüm dosyaları kaldırmak için rm -r Kullandım, ancak üst dizinin kendisi hariç tüm dosyaları ve alt dizinlerini kaldırmak istiyorum.

Örneğin, images gibi bir üst dizine sahibim. header.png, footer.png Dosyalarını ve bir alt dizini içerir.

Şimdi header.png, footer.png Ve alt dizini silmek istiyorum, ancak images değil.

Bunu linux'da nasıl yapabilirim?

78
poorani

Üst düzey dizininize images adı verilirse, rm -r images/* Komutunu çalıştırın. Bu, images içindeki her dosya veya dizinde * Çalıştırmak için Shell glob operatörünü rm -r Kullanır.

63
Jordan Lewis

Gizli dosyaları silmek için şunları belirtmeniz gerekir:

rm -r images/* images/.*

Globları . Ve .. İçeren mermilerle, bu, aşağıdaki gibi bir hataya yol açacaktır

rm: cannot remove `.' directory `images/.'
rm: cannot remove `..' directory `images/..'

ancak gizli dosyaları silecektir.

Errormessage içermeyen bir yaklaşım, mindepth ile find/delete kullanmaktır. Bu gnu-find.

find images -mindepth 1 -delete

Bulunuzda -mindepth Veya -delete Yüklemi olmayabilir, bu durumda şunları yapabilirsiniz:

find images/. ! -name . -Prune -exec rm -rf {} +
54
user unknown

Bir dizindeki tüm dosyaları ve dizinleri (gizli olanlar dahil) silmek için aşağıdakileri deneyebilirsiniz:

  • tüm dosyaları/dizinleri eşleştirmek için ls -Ab kullanın

    cd dir_name && rm -rf `ls -Ab`
    
  • tüm dosyaları/dizinleri eşleştirmek için find kullanın

    find dir_name -mindepth 1 -delete
    

    veya find öğeniz -delete 'u desteklemiyorsa:

    find dir_name -mindepth 1 -exec rm -rf {}
    
  • klasörü silip yeniden oluşturun

    rm -rf dir_name && mkdir dir_name
    
  • bash'ta,

    shopt -s dotglob  
    rm -rf dir_name/*
    
21
zeekvfu

Bir dizin içindeki tüm normal dosyaları yinelemeli olarak silmek için bu komut (GNU veya FreeBSD find) varsayalım:

find . -type f -delete

Bu, sembolik bağlantılar (normal dosyalara işaret etseler de göstermeseler de), dizinler, fifolar, soketler, cihazlar gibi normal olmayan tüm dosyaları bırakır ...

Ayrıca bakınız:

find . ! -type d -delete

dizin dışındaki herhangi bir türdeki dosyaları silmek için.

11
amit singh

Bu sürümü deneyin:

 rm -r test/*
6
demas

Burada find komutunu kullanıyorum:

Adım 1: Tüm dosyaları bulun ve silin:

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

Misal:

find /home/user/Desktop/images/ -type f -exec rm {} \;

Adım 2: Tüm alt dizinleri bulun ve silin:

find /path/to/directory/ -type d -exec rm -R {} \;
3
Mandar Shinde

Soru bir dizini boşaltmaktı = gizli dosyalar da dahil olmak üzere bir dizinin içeriğini kaldırmak, dizinin kendisini değil. -Mindepth 1 ile find komutu aslında doğru yoludur, ancak hata mesajlarından kaçınmak için -maxdepth 1 ile birleştirilmesi gerekir:

find /path/to/dir -mindepth 1 -maxdepth 1 -exec rm -rf '{}' \;
3
Maddes

rm sözdizimi:

rm [OPTION]... FILE...

Bu nedenle, uygun yolu açıkça belirtmeniz gerekir;.

rm -r sub_dir/
0
Zaur Nasibov

Aşağıdaki komutu kullanarak dizini kaldırabilirsiniz:

Sudo rm -r directoryname1/2/3/*

3/* 'den sonra tüm dizini silecektir.

Örnek Sudo rm -r İndirme/şarkı/*

Downloads/song İçindeki tüm dosyaları silecek.

0

Bu benim için mükemmel çalışıyor, her seferinde çalışan birkaç varyasyonu test etti.

Resim dizinini tutan dizinden.

rm -frd ./images/*

önce:

images/
    |_ header.png
    |_ footer.png
    |_ subdir/

sonra:

images/
0
deb-linux-user

Geçerli dizindeki tüm dosyaları ve alt dizinleri silmek için, gizli olanlar dahil, hata mesajı olmadan :

rm -rf .[^.] .??* *

Veya üst dizinden:

rm -rf images/.[^.] images/.??* images/*

https://serverfault.com/a/47940/269538 adresinden.

0
this

Başka seçenek:

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

kaynak: https://askubuntu.com/a/552834/56648

0
Eyal Levin