【发布时间】:2015-01-31 13:40:03
【问题描述】:
我想对文件夹中的一堆 wav 文件进行重新采样。
我的脚本是这样的:
for f in *.wav; do sox “$f” -r 48000 “${f%%%.wav}.wav”; done
控制台给我这个错误:“sox FAIL formats: can't open input file `“90.wav”': No such file or directory”等等,300个文件放在那个文件夹里。
如何对这些文件进行批处理?为什么会出现这个错误?
非常感谢!
解决方案:
for i in *wav; do echo $i; sox $i -r 48000 ${i%%.wav}r.wav; done
【问题讨论】:
-
试试这个:for f in ./*.wav; ...
-
好像有 1 个
%太多了,但是如果你写"${f%%.wav}.wav"甚至"${f%.wav}.wav",这就没用了……你不能在你读的时候覆盖你的文件它! -
三个百分号是怎么回事?我见过一两个,但不是三个。简短的实验表明,第三个是按字面意思使用的,在 Bash 的东部。
-
@techno 是的,它是偶然工作的,实际上以
09.wav.wav作为输出文件结束,因为替换没有做任何事情。
标签: linux bash batch-processing sox