Bash 嵌套管道和通配符

Gar*_*son 0 bash pipe

我有输入文件foo1.txtfoo2.txtfoo3.txt等。我有一些命令munge可以处理输入文件,但是(由于与此处不相关的原因)该命令一次只能处理一个输入文件。我想将输出合并为一个out.txt.

我知道我可以cat foo*.txt连接所有输入文件,但如上所述munge只能对每个单独的文件起作用。也就是说,munge如果我这样做的话,我不会喜欢它cat foo*.txt | munge > out.txt。相反,我需要在连接输出之前对每个文件执行处理。

我确信我可以使用 循环输入文件for,但是如何组合输出呢?

基本上我正在寻找类似的东西,而不预先枚举所有输入文件。

cat foo1.txt | munge > out1.txt
cat foo2.txt | munge > out2.txt
cat foo2.txt | munge > out2.txt
cat out*.txt > out.txt
Run Code Online (Sandbox Code Playgroud)

我敢打赌,有一些非常简单的命令可以在一行中为我完成此操作,也许可以使用嵌套管道和通配符。有任何想法吗?

Bar*_*mar 5

使用循环并将整个循环的输出重定向到out.txt. 并且无需通过管道cat,您只需将输入重定向到文件即可。

for file in foo*.txt; do
    munge < "$file"
done > out.txt
Run Code Online (Sandbox Code Playgroud)