여러 파일에 대해 작동하는 명령을 여러 파일로 출력하는 방법은 무엇입니까?

여러 파일에 대해 작동하는 명령을 여러 파일로 출력하는 방법은 무엇입니까?

나는 objdump 명령을 사용하여 현재 디렉터리에서 .o 확장자를 가진 모든 파일을 분해한 다음 이 명령의 각 .o 파일 출력을 동일한 기본 이름을 가진 .txt 파일에 저장해 보았습니다.

예를 들어, 내 디렉터리에 다음 세 개의 파일이 있다고 가정해 보겠습니다.

myfirstfile.o someotherfile.o finalfile.o

objdump내 목표는 세 개의 새로운 추가 파일(각 파일 에는 해당 원본 .o 파일의 명령 출력이 포함되어 있음)을 만드는 것입니다 .

myfirstfile.txt someotherfile.txt finalfile.txt

제가 시도한 것은 다음과 같습니다. 그러나 "모호한 리디렉션"이라고만 표시됩니다.

objdump -d --no-show-raw-insn *.o > *.txt

답변1

각 파일에 대해 명령을 실행해야 하므로 루프를 사용하는 것이 가장 좋습니다.

쉘 포함 zsh:

for f (./*.o) objdump -d --no-show-raw-insn $f > $f:r.txt

bash쉘 또는 기타 POSIX 쉘(포함 ) 사용 zsh:

for f in ./*.o; do objdump -d --no-show-raw-insn "$f" > "${f%.o}.txt"; done

*.txt파일이 없으면 .o( 에 없음 zsh)이라는 이름의 빈 파일이 생성됩니다.

답변2

다음과 같이 실행되는 myobjdump.sh라는 파일을 만드는 방법:

./myobjdump.sh `ls *.o`

스크립트는 다음과 같습니다.

#!/bin/bash

for ((i=1; i<=$#; i++)); do
  objdump -d --no-show-raw-insn $i > `basename $i .o`.txt
done

편집하다

#!/bin/bash

for n in $@; do
  objdump -d --no-show-raw-insn $n > `basename $n .o`.txt
done

관련 정보