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

  • New Challenger - Game Reviews

    New Challeng

    20 Temmuz 2006
  • RickardRick

    RickardRick

    9 Mart 2007
  • Top10Series

    Top10Series

    26 Kasım 2008