关于Linux:bash中的”批处理”文件

“batch” files in bash

我想创建一个"批处理"文件,比如说一些bash命令(convert.sh)。我认为最好描述一下情况。我有一个美元!^我要转换成MP3格式的大量MP4视频。使用ffmpeg -i /root/name\ of\ video.mp4 /name\ of\ video.mp3转换每一个视频需要花费我不合理的时间。更不用说所有的文件名都很长,而且很复杂,所以可能会出现打字错误。所以我想知道如何制作一个shell脚本(对于bash),它将获取扩展名为.mp4的每个文件,并逐个将其转换为同名的.mp3。就像在它转换一个,然后当它完成时,它会移动到下一个。我使用的是Linux的轻量级版本,所以任何第三部分的软件都可能无法工作,所以我需要使用ffmpeg…

非常感谢您提供的任何帮助

PS:我似乎无法让网站上的格式sytax正常工作,所以如果somone可以为我格式化它,并可能发布一个链接到一个关于它如何工作的手册,那将是非常感谢的=)

PPS:我知道关于使用ffmpeg命令的问题应该在superuser上提出,但是由于我对特定命令没有太多的问题,这与编写bash文件的脚本更相关,我认为这是正确的地方。


一个bashfor循环应该在任何时候为您完成:

1
2
3
4
5
6
SRC_DIR=/root
DST_DIR=/somewhereelse
for FILE in ${SRC_DIR}/*.mp4
do
    ffmpeg -i"${FILE}""${DST_DIR}/$(basename "${FILE}" .mp4).mp3"
done

抱歉-我不知道ffmpeg命令行选项,所以我只是准确地复制了你的文章中的内容。


1)使用查找:

1
find . -name \*.mp4 | xargs ./my_recode_script.sh

2)我的"重新编码"script.sh-看到这个问题因此,您可以轻松地更改输出文件名的扩展名

剩下的就是简单的脚本编写工作:

1
ffmpeg -i $name $new_name # in my_recode_script.sh after changing extension

这对于一次性脚本来说已经足够了,如果您想要一些可重用的东西,请用另一个脚本包装它,该脚本接收到dir的路径,从中重新编码和调用其他部分的扩展名:)