使用 xargs 和 awk 处理多个文件并将处理后的数据写入单独的文件

Process several files with xargs and awk and write the processed data to separate files

我有几个文件想用 awk 处理,然后将 awk 的输出通过管道传输到单独的文件。我想用 awk 处理单个文件并将输出写入文件,但是将它与 find 和 xargs 结合使用对我来说是有问题的。
这是当前命令:

find ./*.data -print0 | xargs -0 -I{} awk '/^00/ {printf "Data: %s"[=10=];}' > {}.processed 

这只会创建一个文件,并将 awk 处理的所有数据合并到一个名为

的文件中

"{}.processed"

.
将所有输出数据写入单独文件的正确方法是什么?

文件 "file1.data" 和 "file2.data" 的输出文件名应为:

file1.data.processed
file2.data.processed

为什么不为此使用 FILENAME awk 内置变量:

 awk '/^00/ {printf "Data: %s",[=10=] >(FILENAME".processed")}' $(find ./*.data)

您可以使用 for 循环来处理此任务,而不是使用 xargs

for F in `find ./*.data`; do
   awk '/^00/ {printf "Data: %s"[=10=];}' "$F" > "$F".processed
done