我有一个 for 循环,它接受具有一种类型扩展名的文件,但管道中的最终命令要求 STDIN 文件具有另一种类型的扩展名。在我的管道中,我用来awk
更改文件类型,以便其格式适合最终命令,但扩展名仍然链接到初始输入文件。
例如:
for file in *.AAA
do
commandA $file | awk ' { print } ' | commandB
命令B的典型用法:
commandB -i myfile.BBB
有没有办法让我在 for 循环和管道中间更改文件的扩展名?
我认为您可以在 for 循环和管道中间更改文件的扩展名,如您所见,这
${file%.*}
是一个很酷的技巧,它基本上从原始文件名中删除文件扩展名 (*.AAA
),然后,我添加.BBB
扩展名来创建我称之为新文件名,new_file
最重要的是,我将这个修改后的文件传递给commandB
选项-i
!或者您可以使用进程替换,因此我将文件名中的
sed
文件扩展名从 更改为.AAA
,.BBB
然后,我将这个奇特的修改后的文件名传递给commandB
使用称为进程替换的东西,它将命令的输出视为临时文件: