我正在寻找一种方法将目录中的所有 alac 文件递归转换为另一种格式。
问题:alac 和 aac 使用后缀 m4a,因此find -name "*.m4a"
不起作用。
答案1
您需要一个可以检测 m4a 文件中的编解码器的工具。其中一种工具是 avprobe,它可以在基于 debian 的 Linux 中的 libav-tools 包中使用(我使用 Ubuntu 14.04)。
然后你可以这样做(如果文件名中没有换行符..):
find . -name \*.m4a | while read file; do avprobe "$file" 2>&1 |grep -q 'Audio: alac' && echo "$file"; done
显然取代echo "$file"
了转换命令。
如果安装这样的工具不可行,您可以使用 来估计grep -q Halac "$file" && grep -q '$alac' "$file"
。我测试的几个苹果无损文件包含这两个字符串,但它可以以很小的概率匹配不是真正的苹果无损编解码器的文件,并且我不太确定苹果无损文件是否保证包含这些字符串。如果没问题的话,上面就变成了
find . -name \*.m4a | while read file; do grep -q Halac "$file" && grep -q '$alac' "$file" && echo "$file"; done