为了账号安全,请及时绑定邮箱和手机立即绑定

合并千万级文件最快的方法是什么

合并千万级文件最快的方法是什么

Go
杨__羊羊 2023-01-03 16:55:33
有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 个字节。

所以,这些数字反映了最好的情况。如果磁盘(或文件系统)速度是您的瓶颈,那么我认为您无能为力。不过,我不希望您的设置将运行时间从十分钟增加到两周:)


查看完整回答
反对 回复 2023-01-03
  • 1 回答
  • 0 关注
  • 85 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信