有5000万个文件,存储在一台ubuntu电脑上,我想把这5000万合并成几个大文件,怎么最快?目前我已经filename.txt通过ls -1命令保存了要处理的文件名我尝试编写一个读取文件的 go 程序,然后将输出读取到文件中,但我发现它太慢了。实际阅读速度合并30-40个文件1s左右,16天以上才能读完。有什么快速合并的好方法吗?执行输出:start:2022-07-22 05:03:09file names = ***out dir = ***read 9057/50803783(0.02%), file=0/48151629, speed=40/s time 3m41s观察系统读写:read: 4 M/s ~ 9 M/s我也试过用awkandcat命令,效果和go差不多。head ~/filename.txt -n 10000 | xargs awk '1' >> ~/out/0sed -i '1,10000d' ~/filename.txt
1 回答
桃花长相依
TA贡献1860条经验 获得超8个赞
我会在这里使用单独的工具:cat
用于连接现有内容,以及split
用于创建具有所需输出大小的块。例如:
cat filename.txt | xargs cat | split -b 1M
对于一百万个测试文件,它在我的 PC 上以大约 100K 文件/秒的速度运行,因此它将在 10 分钟内完成 50M 文件。不过,我确实在 tmpfs 上运行过它,而且每个文件只有 4 个字节。
所以,这些数字反映了最好的情况。如果磁盘(或文件系统)速度是您的瓶颈,那么我认为您无能为力。不过,我不希望您的设置将运行时间从十分钟增加到两周:)
- 1 回答
- 0 关注
- 85 浏览
添加回答
举报
0/150
提交
取消