SORU
8 Mayıs 2011, Pazar


Özyinelemeli olarak belirli bir uzantıya sahip dosyaları aramak

Benim bash ile bir dizin ve alt dizinleri belirli bir uzantısı (en Son Ubuntu BU Sürüm ile tüm dosyaları bulmak için çalışıyorum.

Bu komut dosyasında ne yazıyor:

#!/bin/bash

directory="/home/flip/Desktop"
suffix="in"

browsefolders ()
  for i in "$1"/*; 
  do
    echo "dir :$directory"
    echo "filename: $i"
    #   echo ${i#*.}
    extension=`echo "$i" | cut -d'.' -f2`
    echo "Erweiterung $extension"
    if     [ -f "$i" ]; then        

        if [ $extension == $suffix ]; then
            echo "$i ends with $in"

        else
            echo "$i does NOT end with $in"
        fi
    elif [ -d "$i" ]; then  
    browsefolders "$i"
    fi
  done
}
browsefolders  "$directory"

Terminalde bu komut başladığımda ne yazık ki, şöyle diyor

[: 29: in: unexpected operator

('in' yerine $extension)

Hata burada, neler oluyor? Ama bu ayracı kıvırcık

CEVAP
8 Mayıs 2011, Pazar


find $directory -type f -name "*.in"

biraz her şeyi (ve daha güvenli - dosya adlarında boşluk ile ilgilenir ve dizin adları) daha kısadır.

Senaryonu büyük ihtimalle kendi adına . yok girişler için $extension boş yapma başarısız oluyor.

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • DJAndrewRyan

    DJAndrewRyan

    22 Ocak 2007
  • NLthomas21

    NLthomas21

    20 Mayıs 2008
  • Viktorija A.

    Viktorija A.

    28 Mart 2009