我有一个 awk 脚本,它在一个输入文件上运行并重定向到一个输出文件。
awk -f solar.awk ./PerformanceData_2023-08-02_02-02-17/tmp_YdayData.txt > output.txt
这有效。
下一个命令仅处理第一个文件(不处理第二个):
awk -f solar.awk ./PerformanceData_2023-08-02_02-02-17/tmp_YdayData.txt ./PerformanceData_2023-08-01_02-02-17/tmp_YdayData.txt
不知道为什么。
我最终想要实现的是在子目录中查找文件并对其运行 awk 命令,将结果收集在一个输出文件中。
find . -type f -name 'tmp_YdayData.txt' -print0 | xargs -0 -t awk -f solar.awk >> output.txt
虽然这会再次找到相关文件(如果我在管道之前运行命令部分)完整命令行,但它只处理第一个文件。
-t 选项列出命令行后的所有相关文件。
我做错了什么?
好吧,经过大量摆弄后,以下命令满足了我的要求:
find . -type f -name 'tmp_YdayData.txt' -exec awk -f solar.awk {} \;
我将命令行从
xargs
更改为 exec
。