두 개의 파일 목록을 비교하여 동일한 파일을 찾고 확장자를 무시합니다.

두 개의 파일 목록을 비교하여 동일한 파일을 찾고 확장자를 무시합니다.

동일한 파일 이름을 가지며 동일한 디렉토리에서 확장자(mp3)만 다른 wav 확장자를 가진 파일을 찾고 싶습니다.

지금까지 다음과 같은 구조화된 명령을 시도했습니다.

$ diff -s $(for i in *.wav; do echo "${i%wav}"; done) $(for i in *.mp3; do echo "${i%mp3}"; done)
diff: extra operand `abc(xyz'
diff: Try `diff --help' for more information.

답변1

diff일부 명령을 출력 하려면 다음을 사용하십시오.프로세스 대체<(...)명령 대체 대신 $(...). 그렇지 않으면 작동해야 할 것 같습니다.

diff $(foo)foo의 명령줄에 의 출력을 넣고 diff, diff읽을 파일 이름을 원합니다. diff <(foo)의 출력이 foofd에서 사용 가능하도록 준비하고 diff이미 열린 fd에 해당하는 경로 이름을 제공합니다( /dev/fd/NN, 시스템에 따라 다를 수 있음).


질문을 다시 읽어보더라도 다음과 같이 하고 싶을 수도 있습니다.

for f in *.wav ; do
    b=${f%.wav}
    if [ -f "$b.mp3" ] ; then echo "$b.mp3 exists" ; else
        echo "$b.mp3 missing" ; fi
done

그러면 .wav디렉토리의 모든 파일에 해당 .mp3파일이 있는지 알 수 있습니다. (물론 .mp3해당 파일이 없는 파일은 표시되지 않습니다 .wav.)

관련 정보