Bash
比較兩個文件列表以查找相同的文件但忽略副檔名
我想在同一目錄中查找具有相同文件名的 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.
如果要
diff
輸出某些命令,請使用程序替換<(...)
而不是命令替換$(...)
。否則,這似乎應該工作。
diff $(foo)
將 的輸出foo
放在 的命令行上diff
,而diff
想要讀取文件的名稱。diff <(foo)
安排 的輸出foo
可從 fd 獲得,並給出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
當然。)