다음 명령으로 파이프된 출력을 에코하는 방법이 있습니까? 예를 들어 텍스트 파일에서 파일 이름을 읽은 다음 해당 파일에 대해 명령을 실행할 수 있다고 가정해 보겠습니다.
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.txt
?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
쉘 명령은 tee
사용자가 요청한 작업을 정확하게 수행합니다(다음 명령으로 파이프된 출력을 에코합니다). tee
( ) 에 파이프하면 됩니다 some_command | tee
. 정확한 사용법, 예 및 기타 세부 정보는 명령의 매뉴얼 페이지를 찾으십시오.