You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何仅在无对应.done文件的a_???.json上执行do_x.sh脚本?

解决方法:仅处理未生成.done标记的JSON文件

这里提供两种可靠的修改方案,都能实现只对没有对应.done后缀文件的a_???.json执行do_x.sh脚本:

方案一:用find原生条件判断(推荐,更高效)

直接通过find的-exec选项完成存在性检查,无需管道传递数据:

find "$PWD" -type f -name "a_???.json" -exec sh -c '! [ -f "$1.done" ]' _ {} \; -exec do_x.sh {} \;
  • 逻辑说明:-exec sh -c '! [ -f "$1.done" ]' _ {} \;会检查当前找到的JSON文件对应的.done文件是否不存在,只有满足这个条件的文件,才会触发后面的-exec do_x.sh {} \;执行脚本。
  • 注意:用双引号包裹$PWD,避免路径包含空格时出现错误。

方案二:结合xargs与条件判断

如果习惯用xargs管道的写法,可以在xargs中嵌入shell条件判断:

find "$PWD" -type f -name "a_???.json" | xargs -I{} sh -c '! [ -f "{}.done" ] && do_x.sh {}'
  • 逻辑说明:对每个找到的JSON文件,先检查{}.done是否存在,只有不存在时才执行do_x.sh {}。

示例验证

当目录下存在a_111.json、a_112.json、a_111.json.done时,上述两个命令都会仅对a_112.json执行do_x.sh脚本,符合需求。

内容的提问来源于stack exchange,提问作者Tims

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.12 02:22:37