0

これは、テレビ番組のトレント ダウンロードをクリーンアップするために使用する簡単なスクリプトです。

find . ! -path . -type d -maxdepth 3 -mindepth 3 -exec sh -c '
dir="$0"
tvnamer --batch $dir
mv $dir/*.mkv $dir/..
trash $dir
' {} ';'

$dir に .part ファイルが含まれているかどうかを確認するために if ステートメントを使用して変更するにはどうすればよいですか? 私は明らかにtrash $dir、.partファイルがない場合にのみその部分が発生することを望んでいます:)

4

3 に答える 3

1

特定のパターンに一致するファイルが 1つ以上あるかどうかを確認するソリューションが必要な場合は、次の方法を使用するとうまくいく可能性があります。

ls "${dir}"/*.part >/dev/null 2>&1 || trash "${dir}"
于 2013-10-21T10:21:22.497 に答える
1

test次の演算子を使用します。

[ -f $dir/*.part ] || trash $dir

(言う代わりにtrash $dir:)

trash $dirそう言うと、ディレクトリにファイルが含まれている場合にのみ実行され.partます。


または、次のように言うこともできます。

[[ "$(ls $dir/*.part)" =~ \.part$ ]] 2>/dev/null || trash $dir
于 2013-10-21T09:21:13.620 に答える
0

test(1)and&&演算子を使用できます。例: 次 trash $dir to [ ! -e $dir/*.part ] && trash $dir と同じ変更

if [ ! -e $dir/*.part ]; then
  trash $dir
fi

whereはを次のように呼び出し[ ! -e $dir/*.part ]ています: そのようなファイルが存在しない場合、これは成功するため、ゴミ箱部分が呼び出されます。test(1)!-e.part$dir

于 2013-10-21T09:21:10.253 に答える