检查文件名中的点并将其删除(在Linux上)

我发现我的Synology NAS的bash脚本正在文件夹中查找* .mp4文件,将视频剥离并将其保存为* .m4a. (目的是自动“YouTube到播客转换器”).

for f in *.mp4; do mv -- "$f" "$(date +%Y-%m-%d -r "${f}") $f"; done
for f in *.mp4; do ffmpeg -i "$f" -vn -acodec copy "${f%.mp4}.m4a"; done

有时* .mp4文件名包含句点,例如’此视频… mp4′,导致播客播放器无法识别此类文件.

是否有一行我可以添加到脚本中以删除扩展名前面的句点或者只删除它们?

解决方法:

从${f}中删除扩展名,然后删除或替换所有点,然后在重命名文件添加扩展名,基本上处理除最后一个点之外的所有文件

#!/bin/bash

for f in *.mp4; do
        f=${f%.mp4}
        mv -- "${f}.mp4" "$(date +%Y-%m-%d -r "${f}.mp4") ${f//./_}.mp4"
done
for f in *.mp4; do
        ffmpeg -i "${f}" -vn -acodec copy "${f%.mp4}.m4a"
done

显然,这仅适用于单个扩展(在这种情况下为.mp4).

相关文章

用的openwrt路由器,家里宽带申请了动态公网ip,为了方便把2...
#!/bin/bashcommand1&command2&wait从Shell脚本并行...
1.先查出MAMP下面集成的PHP版本cd/Applications/MAMP/bin/ph...
1、先输入locale-a,查看一下现在已安装的语言2、若不存在如...
BashPerlTclsyntaxdiff1.进制数表示Languagebinaryoctalhexa...
正常安装了k8s后,使用kubect工具后接的命令不能直接tab补全...