首页 > 开发 > linux > 正文

Ubuntu 下合并大批量文件,有没有高效的方法?

2017-09-11 20:16:10  来源: 网友分享

在 Ubuntu 下,把一个 2 G 左右大小的文件,切分为几十万个小文件后(需要处理每行文字的信息),重新合并到一个新文件异常的缓慢甚至无法执行。
执行合并的命令是:

cat packages/*.txt >> combine.txt

所以,有没有更高效的合并大批量文件的方法呢?

补充说明: 为什么要把一个大文件拆分成几十万份呢?
因为这个大文件有五百万行左右,每一行包含“搜索关键词”+“搜索结果”。而搜索关键词有可能重复,搜索结果也要按需处理。
那么,处理之后就剩下几十万个关键词了(也就是被拆分出来的小文件),整个过程 20 分钟左右。现在需要把这些小文件合并到一个文件,然后再写入数据库。
简而言之,就是把一个大文件处理后写入数据库。使用 Linux 命令处理的话,似乎吃不消~
当然,直接的办法是依次打开每个小文件,然后写入目标文件。尝试了一下,大概需要 40 分钟左右。
那么,这里主要是想知道 Linux 有没有针对大批量文件合并的好方法呢?

解决方案

可以试试使用命令paste将大量文件合并:paste -d '\n' -s packages/*.txt > combine.txt

其实,原始文件切分并处理在一些情况下并不需要真正切分成大量的小文件之后才处理,可以利用较新版本的split命令配合选项--filter=COMMAND直接在原始文件上进行处理,并将处理结果直接写入文件combine.txt。

这样就省去了切分和合并的过程。