2016-11-17 1 views
1

私はBashを使うことに新しい(ish)して、いくつかのものを1つのスクリプトに結合する方法を見つけようとしています。Bash:ファイルの種類はありますが、別の種類のファイルがないディレクトリを一覧表示します

私は中断されたファイル転送を探しています。これらのフォルダにはイメージファイル(jpgsまたはpngs)が含まれていますが、別の特定のファイル(finished.txt)がありません。

for f in */incoming/ ; do 
    log_f="${f//\//}" 
    echo "searching $f" 
    find "$f" -iname "*jpg*" -o -iname "*png*" > "/output/${log_f}.txt" 
    echo "$f finished" 
done 

その後、私はhereからfinished.txtファイルを(不足しているフォルダを見つけるために、このコマンドを実行している:ここで

は、私は(hereから)の画像とフォルダを見つけるために使用しているものです):

find -mindepth 2 -maxdepth 2 -type d '!' -exec test -e "{}/finished.txt" ';' -print 

は、それらを結合する方法はJPGまたはPNGファイルを持っているフォルダのリストがあるので、私はしているですが、がfinished.txt持っていないのですか?また、-mtimeを追加したい場合、どこに置くのですか?

また、これを行うためのより良い/より速い方法があれば、私もそれに興味があります。

ありがとう!

答えて

0

jpg/pngでファイルを取得した最初のパスから、dirnameを使用してディレクトリを取得できます。その後、ディレクトリのリストを使って、finished.txtファイルを繰り返し調べることができます。見つけたら、それをプリントアウトしないと、ディレクトリをスキップすることができます。 「|並べ替え| uniqは」おそらく重複を削除するfindコマンドの末尾を

次のように何かが入用

for i in `find "$f" -iname "*jpg*" -o -iname "*png*" -exec dirname {} \;` 
do 
    ls $i | grep finished >/dev/null 
    if [ $? -eq 1 ]; then 
     echo $i 
    fi 
done 

を行う必要があります。

検索 "の$ F" のようなもの-iname "JPG" -o -iname "PNG" -execのdirname {} \; |並べ替え|ユニーク

+0

ありがとうございました。 'find: '':いいえそのようなファイルやディレクトリ' – Amy

+0

私は上記のコマンド "$ f"でパラメータ化されたfを設定したいと思います。したがって、f =/Users/guest/mydirectoryのようなもので、上記のコマンドを実行します。 –

関連する問題