여러 파일을 처리할 때 각 입력 파일의 출력을 별도의 파일로 리디렉션할 수 있나요?

여러 파일을 처리할 때 각 입력 파일의 출력을 별도의 파일로 리디렉션할 수 있나요?

나는 다음과 같은 것을 실행합니다 :

% command *bin > log.txt

*ba.bin, b.bin, 로 확장합니다 c.bin.

log.txt각 파일의 표준 출력이 별도의 파일 (또는 a.txt, b.txt, c.txt) 로 끝나기를 원합니다 .어떻게 해야 하나요?

검색하다가 하나의 파일(예. )을 처리하여 여러 개의 로그 파일을 생성하는 방법에 대한 질문을 많이 찾았 $ command a.bin > log1.txt log2.txt log3.txt지만 내 경우에는 해당되는 내용이 없습니다(분명히 존재하지만 괄호 안의 사례 상황과 같은 질문에 빠져 있습니다).

답변1

별도의 출력 파일을 원하는 경우 해당 파일을 하나씩 처리해야 합니다. STDOUT( STDERRSTDIN)은 명령이 시작되기 전에 상위 프로세스에 의해 설정되고 프로그램에서는 이를 결코 볼 수 없기 때문에 리디렉션을 사용하여 이 작업을 수행할 수 없습니다 >log.txt.

다음과 같이 하십시오:

for i in "*.txt" ; do
    j="${i}.log"
    command "$i" >"$j"
done

관련 정보