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

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

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

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

$ 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도 읽으려고 합니다. 예약된 출력은 fd에서 사용할 수 있으며 열린 fd( , 시스템별로 다를 수 있음) 에 해당하는 경로 이름이 제공됩니다 .diffdiff <(foo)foodiff/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

관련 정보