加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

如何按字母顺序合并bash中的文件

发布时间:2020-12-16 01:08:58 所属栏目:安全 来源:网络整理
导读:我需要将一堆mp3文件合并在一起.我知道这只是做 cat file1.mp3 file2.mp3 似乎工作正常(至少它在我的Zune上正确播放). 我想跑 cat *.mp3 merged.mp3 但由于有大约50个单独的mp3文件,我不想在错误的位置中间文件中途感到惊讶(这是一本我不想重新翻录的有声读
我需要将一堆mp3文件合并在一起.我知道这只是做
cat file1.mp3 >> file2.mp3

似乎工作正常(至少它在我的Zune上正确播放).

我想跑

cat *.mp3 > merged.mp3

但由于有大约50个单独的mp3文件,我不想在错误的位置中间文件中途感到惊讶(这是一本我不想重新翻录的有声读物).

我通读了cat手册页,无法找到是否定义了通配符操作符的顺序.

如果cat不能为此工作,是否有一种简单的方法(可能使用ls和xargs)可能能够为我做到这一点?

您的版本(cat * .mp3> merged.mp3)应该可以正常运行. * .mp3由shell扩展,并按字母顺序排列.

从Bash Reference Manual:

After word splitting,unless the -f option has been set,Bash scans each word for the characters ‘*’,‘?’,and ‘[’. If one of these characters appears,then the word is regarded as a pattern,and replaced with an alphabetically sorted list of file names matching the pattern.

但是,请注意,如果您有许多文件(或长文件名),您将受到“argument list too long”错误的阻碍.

如果发生这种情况,请改用find:

find . -name "*.mp3" -maxdepth 0 -print0 | sort -z | xargs -0 cat > merged.mp3

find中的-print0选项使用空字符作为字段分隔符(以正确处理带有空格的文件名,这与MP3文件一样),而排序中的-z和xargs中的-0通知备用分隔符的程序.

额外功能:省略-maxdepth 0以包含子目录中的文件.

但是,合并MP3文件的方法会弄乱诸如ID3标题和持续时间信息之类的信息.这会影响更多挑剔玩家的可玩性,比如iTunes(也许?).

要正确执行,请参阅“A better way to losslessly join MP3 files”或“What is the best way to merge mp3 files?”

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读