使用 find 将多个文件传递给 awk 并将结果重定向到一个输出文件

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

我有一个 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 选项列出命令行后的所有相关文件。

我做错了什么?

awk find output xargs
1个回答
0
投票

好吧,经过大量摆弄后,以下命令满足了我的要求:

find . -type f -name 'tmp_YdayData.txt' -exec awk -f solar.awk {} \;

我将命令行从

xargs
更改为
exec

© www.soinside.com 2019 - 2024. All rights reserved.