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

  • Charles Griffin Gibson

    Charles Grif

    26 NİSAN 2006
  • CNNMoney

    CNNMoney

    16 Kasım 2006
  • Slave Boy Films - Fandom from a Galaxy Far Far Away

    Slave Boy Fi

    12 HAZİRAN 2009