![두 개의 파일 목록을 비교하여 동일한 파일을 찾고 확장자를 무시합니다.](https://linux55.com/image/110126/%EB%91%90%20%EA%B0%9C%EC%9D%98%20%ED%8C%8C%EC%9D%BC%20%EB%AA%A9%EB%A1%9D%EC%9D%84%20%EB%B9%84%EA%B5%90%ED%95%98%EC%97%AC%20%EB%8F%99%EC%9D%BC%ED%95%9C%20%ED%8C%8C%EC%9D%BC%EC%9D%84%20%EC%B0%BE%EA%B3%A0%20%ED%99%95%EC%9E%A5%EC%9E%90%EB%A5%BC%20%EB%AC%B4%EC%8B%9C%ED%95%A9%EB%8B%88%EB%8B%A4..png)
동일한 디렉토리에서 확장자가 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( , 시스템별로 다를 수 있음) 에 해당하는 경로 이름이 제공됩니다 .diff
diff <(foo)
foo
diff
/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