如何轻松地将文本文件分解成小于阈值的部分?

Wil*_*mKF 5 linux emacs tail head

我有一些长度为 100 到 300 MB 的文本文件,我想在 Emacs 中查看它们,但是我的 Emacs 在打开和遍历如此大的文件时遇到了一些性能问题。因此,我正在寻找一个简单的实用程序来将文件拆分为可管理的块,比如每个 50 MB,并根据原始名称和一些后缀来命名块以指示它们在序列中的位置。每个块都会在前一个被截断的地方拾取,并且不超过 50 MB,最后一个块可能更短。

是否有任何简单的工具可以在 Linux 计算机上执行此操作,例如 head 或 tail 之类的东西,可以提供多个结果,每个块一个?

例如,给定test.out120 MB 长的文件,将其分成test.out.1前 50 MB、后test.out.250 MB 和test.out.3文件末尾的其余 20 MB。

我可以使用的组合head,并tail得到碎片,但我想一个工具,抽象出这一切,也许是一个Perl脚本或Python脚本有人已经创造了做这样的任务呢?

Hen*_*nes 18

已经有一个很好的工具: split

> 人 1 分裂 

姓名
     split -- 将文件分割成几部分

概要
     split [-l line_count] [-a suffix_length] [file [prefix]]
     split -b byte_count[K|k|M|m|G|g] [-a suffix_length] [文件 [前缀]]
     split -p 模式 [-a suffix_length] [文件 [前缀]]


split --bytes 50M test.out test.out_会将文件拆分test.out为 test.out_xaa、test.out_xab、test.out_xac、...

一个更丑陋的解决方案是使用 dd

dd if=test.out of=test.out.part1 bs=1M count=50 skip=0使用 test.out 中的前 50M 创建一个名为 test.out.part1 的文件。您可以将 skip 的值增加到 1 以获得第二个块,增加到 2 以获得第三个等等。只需确保也更改文件名,否则最终会覆盖相同的输出文件。