bash - tüm dizinleri (ve içerikleri) kaldır, ancak pwd'deki dosyaları kaldır


19

Tüm dizinleri pwd'den kaldırmak istiyorum, ancak dosyaları pwd'de yalnız bırakın. Benim pwd içeriği ise:

mydir1
mydir2
myfile1
myfile2

o zaman sadece

myfile1
myfile2

Kullanmam gerektiğini varsayıyorum rm -r -i

Doğrumuyum?

Yanıtlar:


10

Hayır, hiçbir şey belirtmediğiniz için size "eksik işlenen" verir. *Dosyaları koymak için de bir komut istemi koymak .

Ben denemek istiyorum:

find -mindepth 1 -maxdepth 1 -type d -exec rm -r {} \;

mindepth 1Hariç tutar .sonuçlarından, maxdepth 1yine (dolayısıyla bir uyarı oluşturma) silinecek dizinleri altında yapmaya çalışıyor hariç tutar. Ancak pratikte birkaç "masum" uyarı almayı kabul ederseniz ikisini de dışarıda bırakabilirsiniz.


21

Bunu bir yerde buldum:

rm -r */

Gitmenin en kolay yolu görünüyor. Örneğinizle, her bir vakayı onaylamanız gerekir, 5 dosyanız varsa sorun değil, ancak daha büyük dosya yapılarıyla etkileşimli bir mod gitmenin yolu değildir ... Bir öneri olarak, önemli bilgiler varsa, destek olmak...


1
Bu aynı zamanda burada arzu edilmeyen sembolik bağlantıları da takip edecektir.
JdeBP

8

kullanım

rm -rf ./*/

Bu, etkileşimli modu önler ve yalnızca yerel dizininizdeki dizinleri siler.


As JdeBP işaret üzerine Martin'in çok benzer cevap akım (üst düzey) dizin diğer dizinlere sembolik bağlantıları içeriyorsa, bunlar da (bunlar geçerli dizine veya alt olmasalar bile) silinecektir.
Scott

3

Böyle bir şey işe yaramalı:

find /path -type d -exec rm -rf '{}' \;

-type d yalnızca dizinleri arar


-1
you can also try in this way to delete only all folders not files from any location in linux.

    #delete only all dir and don't touch files
    #!/bin/bash
    for dir in `ls -l | grep ^d | awk '{print $9}'`
    do
    echo "going to delete $dir " `rm -rf $dir`
    done
    ls
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.