这是一个简单的脚本,用于清理我的电视节目的torrent下载:
find . ! -path . -type d -maxdepth 3 -mindepth 3 -exec sh -c '
dir="$0"
tvnamer --batch $dir
mv $dir/*.mkv $dir/..
trash $dir
' {} ';'
如何使用if语句修改它以检查$ dir中是否包含任何.part文件?我显然只希望在没有.part文件时发生trash $dir
部分:)
答案 0 :(得分:1)
使用test
运算符:
[ -f $dir/*.part ] || trash $dir
(而不是说:trash $dir
)
只有当目录包含trash $dir
个文件时,才会执行.part
。
或者,您可以说:
[[ "$(ls $dir/*.part)" =~ \.part$ ]] 2>/dev/null || trash $dir
答案 1 :(得分:1)
如果您需要一个解决方案来检查是否有一个或更多文件与给定模式匹配,那么您可能会有更多运气:
ls "${dir}"/*.part >/dev/null 2>&1 || trash "${dir}"
答案 2 :(得分:0)
您可以使用test(1)
和&&
运算符。例如:
更改
trash $dir
to
[ ! -e $dir/*.part ] && trash $dir
与
if [ ! -e $dir/*.part ]; then
trash $dir
fi
其中[ ! -e $dir/*.part ]
以下列方式调用test(1)
:'测试是否存在!
)(-e
)文件以{{1}结尾在.part
中。如果这样的文件不存在,则成功,因此调用垃圾部分。