bash 一个衬垫来对没有关联文件的文件执行命令

问题描述 投票:0回答:1

以下代码对所有 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

bash find xargs
1个回答
0
投票

if
中执行 shell
xargs
语句。

find $PWD -type f -name "a_???.json"  | 
    xargs -I{} bash -c 'if ! [ -f "$1.done" ]; then do_x.sh "$1"; fi' {} {}
© www.soinside.com 2019 - 2024. All rights reserved.