SORU
9 Ocak 2011, Pazar


Nasıl bir dizin özyinelemeli döngü

Dizin özyinelemeli döngü ve uzantılı tüm dosyaları kaldırmak istiyorum .pdf and.doc bir dizin özyinelemeli olarak değil yönetmek için döngü , yukarıda belirtilen dosya uzantıları ile dosyaları filtrelemek için idare ediyorum.

Benim kod şimdiye kadar

#/bin/sh

SEARCH_FOLDER="/tmp/*"

for f in $SEARCH_FOLDER
do
    if [ -d "$f" ]
    then
        for ff in $f/*
        do      
            echo "Processing $ff"
        done
    else
        echo "Processing file $f"
    fi
done

Ben hiçbir yere gitmiyorum beri kod tamamlamak için yardıma ihtiyacım var.

CEVAP
9 Mart 2011, ÇARŞAMBA


Mouviciel cevabı için bir takip olarak, aynı zamanda xargs kullanmak yerine döngü için bu gibi bir yapabildiğinize. Ben sık sık özellikle her tekrarında daha karışık bir iş yapmam gerekiyorsa xargs hantal bul.

for f in $(find /tmp -name '*.pdf' -or -name '*.doc'); do rm $f; done

Güncelleme:

Çok sayıda kişi yorumladı var gibi, eğer bu dosya adları, boşluk varsa orada başarısız olur. Geçici olarak _ (iç sahada seperatör) yeni satır karakteri ayarlayarak çalışabilirsiniz.

IFS=$'\n';for f in $(find /tmp -name '*.pdf' -or -name '*.doc'); do rm $f; done

Eğer dosya adlarında yeni satır varsa, o zaman o da işe yaramaz. Xargs tabanlı bir çözüm ile daha iyi.

find /tmp \( -name '*.pdf' -or -name '*.doc' \) -print0 | xargs -0 rm

(Kaçtı parantez burada -print0 or her iki yan için geçerli olması gerekmektedir.)

bulmak da var şöyle ki, bu silmek eylem,:

find /tmp \( -name '*.pdf' -or -name '*.doc' \) -delete

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • 1881 Animation

    1881 Animati

    5 EKİM 2013
  • TVNorge

    TVNorge

    5 EKİM 2006
  • Within Temptation

    Within Tempt

    18 EYLÜL 2006