2009-03-05 78 views
0

我有一些代码会在输出中生成无数的行。所以,我不能将这些值存储在单个输出文件中。将长输入分割为多个文本文件

相反,我将输出文件分成更多文件。我按照索引号分割文件。现在我的疑问是我不知道我的文件会有多少个数字。那么是否有可能将文件分割成不同的输出而不给索引?例如:

  • 第100,000 m.txt
  • 线从100,001到下一个200000 n.txt
+0

你只用bash吗? – dusoft 2009-03-05 10:02:39

回答

1

如果你并不需要能够找到基于特定行文件名称,您可以根据文件大小拆分输出。将行写入m1.txt,直到下一行将使其> 1MB;然后移动到下一个文件 - m2.txt。

0

生成带有运行索引的文件。从打开例如m_000001.txt。将一个固定的行写入该文件。关闭文件。打开下一个文件,例如m_000002.txt,然后继续。

确保您不会溢出磁盘是一项管家任务,需要单独完成。这里可以考虑备份,压缩,文件旋转等。

0

您可能想要使用logrotate来达到此目的。它有很多选项:查看手册页。

这里的介绍手册页:

"logrotate is designed to ease administration of systems that generate 
large numbers of log files. It allows automatic rotation, compression, 
removal, and mailing of log files. Each log file may be handled daily, 
weekly, monthly, or when it grows too large." 
1

分(1)似乎正是为你的工作的工具。

0

4种方式而写入分裂:

A)固定的没有字符(码)

B)固定无线

C)固定的时间间隔写入

之前D)调用写入之前函数的固定计数器

基于这些分割,您可以命名输出文件。