我有一个非常大(>500 to )的文件,我想在它前面加上一个相对较小的头(<20KB)。执行以下命令:
cat header bigfile > tmp
mv tmp bigfile或者类似的命令(例如,使用sed)非常慢。
向现有大文件的开头写入标题的最快方法是什么?我正在寻找一种可以在CentOS 7.2下运行的解决方案。可以从CentOS安装或更新repo、EPEL或RPMForge安装包。
如果有一些方法不涉及重新定位或复制大文件中的大量数据,那就太好了。也就是说,我希望有一种解决方案,无论大文件的大小如何,都可以在给定的头文件的固定时间内运行。如果这要求太高,那么我只要求最快的方法。
编译辅助工具(就像在C/C++中一样)或使用脚本语言是完全可以接受的。
发布于 2016-06-17 22:10:18
这是需要做一次的事情吗,也许是为了“修复”设计疏忽?或者这是您需要定期执行的操作,例如将摘要数据(例如,数据记录的数量)添加到文件的开头?
如果你只需要做一次,那么你最好的选择就是接受已经犯了一个错误,并承担回溯修复的后果。只要您的目标驱动器不同于源驱动器,您应该能够在大约两个小时内修复一个500 up的文件。因此,在几个小时后运行一周的批处理过程后,您可能已经升级了大约30或40个文件
如果这是所有此类文件的标准要求,并且您认为只有在文件完成时才能应用更改--也许是某种摘要信息--那么您应该保留每个文件开头的空间,并将其留空。然后,只需查找标头区域,并在可以提供的情况下用实际数据覆盖它
如前所述,标准文件系统需要复制整个文件,以便在开头添加一些内容
如果您的500 30文件在标准硬盘上,这将允许以每秒100MB左右的速度读取数据,那么读取整个文件将需要5120秒,或者说大约1小时30分钟
只要您将目标与源驱动器安排在不同的驱动器上,您基本上可以在读取的同时写入新文件,因此不会花费太多时间。不过,恐怕没有别的办法能加快速度了
https://stackoverflow.com/questions/37882286
复制相似问题