【发布时间】:2014-11-29 04:55:57
【问题描述】:
我需要在目录中递归查找一种类型的文件。然后为找到的每个文件执行脚本,并以找到的文件作为参数:
#!/bin/bash
find /mnt/storage/content/www/html/smartsite/src/data/resource/ ! -path "*/tmp/*" -regextype posix-awk -iregex "(.*.toConv)" -exec /mnt/storage/content/www/html/smartsite/cron/VideoConvert/convert {} \;
它可以正常工作,但是当调用脚本(转换)抛出错误时执行会停止。我想阻止这种情况并继续执行找到的下一个文件。例如,无论我做什么
/convert || true {} \;
或
/convert {} || true \;
它总是抛出错误“没有执行参数”。我做错了什么?
【问题讨论】:
-
出于好奇,您能否解释一下
throws error或提供脚本?find的执行不应在stderr上停止,或者即使脚本返回错误退出代码(-exec将变为 false,这将阻止-exec之后的表达式执行,并导致find继续下一个文件。但由于在您的命令中-exec之后没有表达式,这应该没关系) -
“convert”脚本中有 ffmpeg 调用。如果 ffmpeg 失败, find 停止搜索。我想阻止这种情况并转到找到的下一个文件。所以我要么我需要确保“转换”脚本不会向 stderr 抛出任何错误,要么添加 || true 到 find/exec 传递“true”退出代码来查找,即使脚本失败
标签: bash error-handling find exec