我目前的 LAME 命令是:
lame -b 128 -m j -h -V 1 -B 256 -F *.wav file.mp3
我想要的是:
在文件中:file.mp3
输出文件:file_-b_128_-m_j_-h_-V_1_-B_256_-F.mp3
此外,我将改变论点,请不要发布仅适用于这些论点集的答案。
我使用 Ubuntu 16.04,我的 LAME 版本是
LAME 64位版本3.99.5(http://lame.sf.net)
我有一个想法,也许我们可以用:来跟踪历史记录history | tail -n 1
并将其附加到.mp3
创建的文件中。
答案1
原始版本
我建议您使用 shellscript。
例如使用名称
wav2mp3
将命令行和所有其他相关信息存储在 shellscript 中。
我建议您避免在文件名中使用具有特殊含义的字符(空格
[
和),请将其替换为]
_
#!/bin/bash options="-b 128 -m j -h -V 1 -B 256 -F" OptInName=${options//\ /_} # only testing here, so making it an echo command line echo lame "$options" *.wav "mymp3_$OptInName.mp3"
使其可执行
chmod ugo+x wav2mp3
运行它(它在这里只是回响,显示了真实的东西是什么样子),
$ ./wav2mp3 lame -b 128 -m j -h -V 1 -B 256 -F hello.wav hello world.wav mymp3_-b_128_-m_j_-h_-V_1_-B_256_-F.mp3
带参数的版本
如果 b 值是唯一的选项,您想要更改,那么在调用 wav2mp3 时您可以将其作为唯一的参数。
#!/bin/bash
if [ $# -ne 1 ]
then
echo "Usage: $0 <b-value>"
echo "Example: $0 128"
else
options="-b $1 -m j -h -V 1 -B 256 -F"
OptInName=${options//\ /_}
# only testing here, so making it an echo command line
echo lame "$options" *.wav "mymp3_$OptInName.mp3"
fi
例子:
$ ./wav2mp3 128
lame -b 128 -m j -h -V 1 -B 256 -F hello.wav hello world.wav mymp3_-b_128_-m_j_-h_-V_1_-B_256_-F.mp3
$ ./wav2mp3 256
lame -b 256 -m j -h -V 1 -B 256 -F hello.wav hello world.wav mymp3_-b_256_-m_j_-h_-V_1_-B_256_-F.mp3
具有任意数量参数的版本
#!/bin/bash
if [ $# -eq 0 ]
then
echo "Usage: $0 <parameters>"
echo "Example: $0 -b 192 -m j -h -V 1 -B 256 -F"
else
options="$*"
OptInName=${options//\ /_}
# only testing here, so making it an echo command line
# When using parameters without white space (and this is the case here),
# you should use $* and when calling the program (in this case 'lame')
# I think you should *not* use quotes (") in order to get them separated.
# So $options, not "$options" in the line below.
echo lame $options *.wav "mymp3_$OptInName.mp3"
fi
例子:
$ ./wav2mp3star -b 192 -m j -h -V 1 -B 256 -F
lame -b 192 -m j -h -V 1 -B 256 -F hello.wav hello world.wav mymp3_-b_192_-m_j_-h_-V_1_-B_256_-F.mp3