wwttc
V2EX  ›  问与答

Linux 上如何快速高效的对几个大文件进行合并?

  •  
  •   wwttc · Mar 23, 2016 · 5294 views
    This topic created in 3705 days ago, the information mentioned may be changed or developed.

    假如现在我有一个 100G 的大文件,内容为文本。现在想要将文件的本身进行复制,得到一个大约 1T 的文件。 我想到的一种方法是对这个 100G 的文件进行复制,然后将多个文件进行 merge 。

    copy 100G.txt another100G.txt
    cat another100G.txt >> 100G.txt
    

    就是利用 copy 和 cat 命令。但是,这样做还是太慢。有没有什么高效的做法呢?

    5 replies    2016-03-24 02:58:01 +08:00
    zxgngl
        1
    zxgngl  
       Mar 23, 2016
    能更具体地讲一下你的应用场景吗?通过你的描述我还是不太清楚是什么导致你有这样的需求。
    zxgngl
        2
    zxgngl  
       Mar 23, 2016
    但是我可以提供一点思路:节省时间可以通过减少对硬盘的“读”或“写”操作,如果你每次写的都是一样的内容(这 100 G 的大文件),那么可以通过把它放到内存中,这样就不用每次都“读”了。然后你可以写一个程序多次把内存中的这 100 G 的数据写入到目标文件中。这只是一个简陋的思路,具体操作可能还有优化的余地。
    SoloCompany
        3
    SoloCompany  
       Mar 24, 2016
    for i in `seq 4` ; do
    cat 1.txt | tee -a 1.txt > /dev/null
    done

    循环执行 4 次,你的 1.txt 就自增 16 倍

    嗯,建议循环 64 次作死一下试试
    SoloCompany
        4
    SoloCompany  
       Mar 24, 2016
    不想重复 io 的话其实人体蜈蚣一下就可以了
    cat 1.txt | tee -a 1.txt | … 此处省略一千字 ... | tee -a 1.txt | tee -a 1.txt > /dev/null
    lhbc
        5
    lhbc  
       Mar 24, 2016 via Android
    其实大文件分割成几个小的不是更容易处理吗……
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   897 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 36ms · UTC 20:30 · PVG 04:30 · LAX 13:30 · JFK 16:30
    ♥ Do have faith in what you're doing.