使用缺少的文件扩展名重命名音乐文件

我最近一直在尝试一些不同的音乐播放器,并注意到我的音乐中有一些(很多)会从图书馆中丢失。 事实certificate,在某些时候,我的音乐文件过多丢失了.mp3 / .ogg / .flac文件扩展名。 老实说,我不确定这是怎么发生的,但我确信这是我做错的事情(或者我认为这无关紧要,因为文件扩展程序主要是装饰性的)。

所以我需要恢复这些文件扩展名。 我已经研究了pyrenamer,但我无法弄清楚如何将它与没有扩展名的文件匹配,然后告诉它根据文件的实际类型添加正确的文件扩展名。

我也看过EasyTag。 但是,它还完全基于文件扩展名识别音乐文件。 所以我想修复的音乐甚至都没有显示出来。 辉煌。

有关如何做到这一点的任何想法? 我当然不介意一些命令行,我只是不确定哪种工具最好,而且我也吮吸正则表达式。

这个bash脚本可以做到这一点:

 #! /bin/bash find ~/Music -type f | (while read path; do case `file -i "$path"` in *audio/mp3*|*audio/mpeg*) ext='.mp3' ;; *application/ogg*) ext='.ogg' ;; *flac*) ext='.flac' ;; *) continue;; # ignore unknown files esac newname="$(dirname "$path")/$(basename "$path" "$ext").$ext" if [ "$path" != "$newname" ]; then mv -v "$path" "$newname" fi done) 

该脚本使用file -i来读取file -i的MIME类型; 我这里没有FLAC文件,因此您可能希望通过运行file -i a_file.flac (以及可能调整脚本源)来检查FLAC的MIME类型。

如果要在任何文件重命名之前要求确认,可以向mv添加选项-i

尝试实际重命名之前,echo mv -v替换mv -v并进行测试运行可能是个好主意 – echo mv将打印出由脚本执行的mv命令。