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

  • Dopelives

    Dopelives

    30 Temmuz 2009
  • hotstrikegently

    hotstrikegen

    26 AĞUSTOS 2011
  • Sarah's YouTube Channel

    Sarah's YouT

    27 Temmuz 2009