wwttc
V2EX  ›  问与答

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

  •  
  •   wwttc · Mar 23, 2016 · 5648 views
  •   You need to sign in to view this topic
    This topic created in 3859 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   ·   Privacy   ·   Solana   ·   3276 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 03:44 · PVG 11:44 · LAX 20:44 · JFK 23:44
    ♥ Do have faith in what you're doing.