如何使用find命令对多个文件执行awk脚本

Kar*_*arl 1 linux bash awk

对于单个文件,此命令对我而言工作正常

awk -f test.awk template.yml file.yml > tmp && mv tmp file.yml
Run Code Online (Sandbox Code Playgroud)

fins命令我找到了我想要的所有文件

find . -wholename "*vars/*.yml"
Run Code Online (Sandbox Code Playgroud)

我不确定如何在所有文件上执行以上awk命令,以便可以将它们替换到位。我有AWK 3.1的旧版本

hee*_*ayl 5

awk如果您有GNU,则GNU 具有就地修改选项awk

find . -wholename "*vars/*.yml" -exec awk -i inplace -f test.awk {} +
Run Code Online (Sandbox Code Playgroud)

否则,您需要一次处理一个文件:

find . -wholename "*vars/*.yml" -exec \
     bash -c 'awk -f test.awk "$1" >"$1".tmp && mv "$1".tmp "$1"' _ {} \;
Run Code Online (Sandbox Code Playgroud)