您的版本 ( cat *.mp3 > merged.mp3
) 应该可以按预期工作。由*.mp3
外壳扩展,并将按字母顺序排列。
来自Bash 参考手册:
分词后,除非设置了 -f 选项,否则 Bash 会扫描每个单词中的字符“*”、“?”和“[”。如果出现这些字符之一,则该词被视为一个模式,并替换为按字母排序的与该模式匹配的文件名列表。
但是,请注意,如果您有很多文件(或长文件名),您将受到“参数列表太长”错误的阻碍。
如果发生这种情况,请find
改用:
find . -name "*.mp3" -maxdepth 0 -print0 | sort -z | xargs -0 cat > merged.mp3
-print0
in 选项使用find
空字符作为字段分隔符(以正确处理带有空格的文件名,这在 MP3 文件中很常见),而-z
insort
和-0
inxargs
则通知程序备用分隔符。
额外功能:省略-maxdepth 0
也包括子目录中的文件。
但是,这种合并 MP3 文件的方法会弄乱您的 ID3 标题和持续时间信息等信息。这将影响更挑剔的播放器的可玩性,例如 iTunes(也许?)。
要正确执行此操作,请参阅“无损加入 MP3 文件的更好方法”或“合并 mp3 文件的最佳方法是什么? ”