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

  • Lupe Fiasco

    Lupe Fiasco

    23 ŞUBAT 2006
  • Samvith V Rao

    Samvith V Ra

    20 EKİM 2006
  • SDSARG3

    SDSARG3

    14 Mart 2009