以下代码对所有 a_???.json 类型的文件递归执行 do_x.sh 。但我想对这些文件的子集执行相同的操作,这些文件没有具有相同名称和不同扩展名的相应文件。
find $PWD -type f -name "a_???.json" | xargs -I{} do_x.sh {}
我该如何说在同一个班轮中,执行相同的操作,但仅对没有相应 a_???.json.done 的文件 a_???.json 进行操作?以下不是确定的解决方案:
find $PWD -type f -name "a_???.json" -exclude "a_???.json.done" | xargs -I{} do_x.sh {}
Example
a_111.json
a_112.json
a_111.json.done
因此,仅在 a_112.json 上执行 do_x.sh
在
if
中执行 shell xargs
语句。
find $PWD -type f -name "a_???.json" |
xargs -I{} bash -c 'if ! [ -f "$1.done" ]; then do_x.sh "$1"; fi' {} {}