2010-12-02 13 views
0
/usr/local/bin/growlnotify -m 'Looking for subtitles...' 
found='find /Users -type d -mmin -1' 
found1='find $found/*.txt' 

if [ -d "$found1" ]; 
     then 
    /usr/local/bin/growlnotify -m "Subtitles downloaded!" 
    else 
    /usr/local/bin/growlnotify -m "Could not download subtitles" 
fi 

アプリが字幕をダウンロードしたフォルダーを探し出し、それが存在するかどうかにかかわらずgrowlを使用してユーザーに通知するbashスクリプトを作成しようとしています。特定のディレクトリ(-mmin -1)内の特定のファイル(txt)を見つける方法は?

た$は私にディレクトリのリストを提供しますが、私は私が欲しいものに取得する方法がわからない...

=助けてください)私の英語

+0

投稿したスクリプトに問題があります。コマンドを実行する場合は、一重引用符( '')ではなくバッククォート( '\' ')を使用する必要があります。私はこれがあなたのオリジナルの質問に答えるかどうかは分かりませんが、少なくともスクリプトを実行するようになります。 – chrisaycock

+0

ファイルを選択するためのより狭い基準のセットを決定する必要があります。あなたが今持っているものは、潜在的に多数の偽陽性を引き起こす可能性があります。あなたがしようとしていることをより明確に指定してください。直前に変更されたディレクトリの下にある '.txt'ファイルを探しているようです。ちなみにあなたの英語は大丈夫です。 –

答えて

0

のため申し訳ありません

基本的には、スクリプトの中にいくつかのエラーがありますが、それ以外にも正しい方法だとは思いません。

はとにかく、まず、あなたがすべきの:

found=`find /Users -type d` 

を( `ない「の使用を注意してください)$に格納します

は、/ユーザーの下にディレクトリのリストを発見しました - mmin 1 paramは、直前に作成されたディレクトリをリストします。正しい場合は、再度追加します。

for d in $found; do 
    #here you do ll or find for .txt files, using $d as dir 
done 

その方法は、私はあなただけで行うことができると思い、私のために最善ではありません:

find /Users -name *.txt 

後で、結果はTXTファイルを探すためにループする必要があること

あなたが得たものを見ると、findの出力は各txtファイルが存在するディレクトリを表示します。これは実行しようとしているディレクトリと同じですが、1つのステップだけです。

1

回答ありがとうございます!これは私が使用したもので、うまく動いているようです。

for FILE in "[email protected]" 
do 
if [ -e "${FILE%.*}.txt" ]; 
       then 
        /usr/local/bin/growlnotify -a iNapi -m "Napisy zostały pobrane!" 
       else 
        /usr/local/bin/growlnotify -a iNapi -m "Nie udało się pobrać napisów." 
      fi 
done 
関連する問題