回显管道输出

回显管道输出

有没有办法回显通过管道传输到下一个命令的输出?例如,假设我可以从文本文件中读取文件名,然后对该文件运行命令:

cat files.txt | xargs -I{} -d"\n" command 

命令运行并且输出显示在终端中,有没有办法也打印出文件名?

假设输入文件包含:

file1.txt
file2.txt

预期输出:

file1.txt
[output of command with file1.txt as input]
file2.txt
[output of command with file2.txt as input]

有没有办法也可以在标准输出中获取file1.txtand ?file2.txt

答案1

你最好写函数:

Function()
{
cat file1.txt | xargs -I{} -d"\n" command >> /dev/console;
cat file2.txt | xargs -I{} -d"\n" command >>/dev/console;
}

答案2

使用cat是更多的工作,因为你有一个子流程。我想使用 while 循环会更快

while read filename
do
# do something with $filename
done<file_to_be_processed

答案3

要获取您想要使用的文件名echo 来获取您可以使用的内容cat。如果你想保持灵活性(例如,用cat files.txt命令交换你的find ....命令,你应该保留你的调用,xargs但当时只做一个文件:

 cat files.txt | xargs -L 1 /path/to/your_script

your_script

#!/bin/bash
echo $1
cat $1

答案4

Shell 命令tee完全按照您的要求执行(回显通过管道传输到下一个命令的输出)。只需通过管道将其传输到tee( some_command | tee) 即可。查找命令的手册页以获取确切的用法、示例和任何其他详细信息。

相关内容