我想在同一目录中找到具有相同文件名的 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
,同时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