有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 關注
- 110 瀏覽
添加回答
舉報
0/150
提交
取消