我正在使用 Timidity 将许多 midi 文件转换为 mp3。我想知道是否有一种标准方法来指定输出模式,以便将所有文件转换*.mid
为/path/*.wav
我一般会问这个问题,因为在命令中也会这样mv
。还是这与应用程序中的特定实现有关?
那么,如何将 *.mid 文件移动到 *.wav?
答案1
假设您只想重命名文件。那么如果您使用的是 Bourne shell(例如sh
, bash
),则可以使用循环对与模式匹配的文件运行该命令for
。以下是等效的多行和单行版本:
for f in *.mid
do
mv "$f" "${f%.mid}.wav"
done
for f in *.mid; do mv "$f" "${f%.mid}.wav"; done
循环运行带有 扩展中的每个单词的for
命令,并删除后缀,以便我们可以将其替换为。引号使此程序对于包含空格的文件名正确(但对于以“-”开头的文件名不正确,因为这取决于命令)。如果您想匹配多组文件而不是所有内容,则可以使用多个模式,例如$f
*.mid
${f%.mid}
.mid
.wav
for f in alpha-*.mid beta-*.mid; do ...
你可以用任何你想要的命令来代替mv
。我看了一下 Timidity 的手册页,但我不明白它在哪里获取输出文件名,所以我没有给出例子。
答案2
我制作了一个将 *.mid 移动到 *.wav 的 python 脚本。
#!/usr/bin/python2.7
import sys
import glob
import shutil
import os
try:
dir = sys.argv[1]
except IndexError:
print "Usage: "+sys.argv[0]+" dir"
print "Example: "+sys.argv[0]+" /home/user/dir"
sys.exit(1)
for file in glob.glob(os.path.join(dir, '*.mid')):
newfile = file.partition(".mid")
newfile = newfile[0]
newfile = newfile+".wav"
shutil.move(file, newfile)