gpt4 book ai didi

unix - 如何在没有中间文件的情况下将多个文件合并为一个文件?

转载 作者:行者123 更新时间:2023-12-02 08:20:33 26 4
gpt4 key购买 nike

这是我面临的问题:

  • 我正在对一个大小约为 100G 的文本文件进行字符串处理。
  • 我试图通过将文件分成数百个来提高运行时间较小的文件并并行处理它们。
  • 最后,我将生成的文件按顺序重新组合在一起。

文件读/写时间本身需要几个小时,所以我想找到一种方法来改进以下内容:

cat file1 file2 file3 ... fileN >> newBigFile
  1. 这需要双倍的磁盘空间,如 file1 ... fileN占用100G,然后newBigFile另外需要 100Gb,然后 file1 ... fileN被删除。

  2. 数据已在 file1 中... fileN ,执行 cat >>引发阅读当我真正需要的是数百个文件时,我需要编写时间重新显示为 1 个文件...

最佳答案

如果您不需要随机访问最终的大文件(即您只需从头到尾阅读一次),您可以使数百个中间文件显示为一个。你通常会做的地方

$ consume big-file.txt

相反

$ consume <(cat file1 file2 ... fileN)

这使用 Unix process substitution ,有时也称为“匿名命名管道”。

您还可以通过拆分输入并同时进行处理来节省时间和空间; GNU Parallel有一个--pipe switch这正是这样做的。它还可以将输出重新组装成一个大文件,可能会使用更少的暂存空间,因为它只需要一次在磁盘上保留核心数个片段。如果您实际上同时运行数百个进程,并行将让您调整机器的并行度,从而大大提高您的效率。我强烈推荐它。

关于unix - 如何在没有中间文件的情况下将多个文件合并为一个文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4072361/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com