产生需求:linux环境下对同一文件夹下同一格式的文件批量处理
———使用ffmpeg抽取mp4视频文件中的音频保存为m4a格式
需要对文件夹所有文件进行操作,故关联到批量重命名命令
1 | !/bin/bash |
上述代码实现的功能是对文件名形似 glyphicons_数字_
字符串.png 的文件去除深色部分的实现,参考 cut 手册知道 -d 参数用于自定义分隔符,例如上述文件名中存在两处 “__” 下划线,可被分隔符分为3块,配合 -f 参数使用选择被划分的第三块区域,实现目的。
回到需求,命令涉及到对文件后缀名的更改,需要获取文件名中去除后缀名的部分作为新文件的标识,所以 -d 可搭配 “.” 使用 ,再选取合适的划分区域作为 -f 的参数即可,注意文件名中可能会出现 “.” 标识符,故取 -f1 取第一部分作为文件名前缀满足标识需求。
例:抽取example.mp4文件中的音频保存为example.m4a
对单一文件通过ffmpeg工具实现:ffmpeg -i example.mp4 -vn -y -acodec copy example.m4a
则批量处理方法如下:
1 | !/bin/bash |
但是上述方法没有考虑到文件名中包含空格的情况,作如下处理即可
1 | !/bin/bash |
补:chmod a+x example.sh 赋予文件可执行权限