有没有办法删除文件的前几个字节(从前面截断)而不使用tail之类的程序或者不必读取文件的全部内容?
这是因为文件大小可能是几百MB甚至是GB,因此处理读取和重写文件内容将非常有效。
我正在寻找的可能是一种解决方案,它允许我偏移文件的开头(在文件分配表中),以便跳过前几个字节。
在Windows上有一个SetEndOfFile
函数,它允许我简单地通过限制文件的结尾来截断文件,从而减小文件大小。
是否有类似StartOfFile
函数可以让文件在当前开始位置之后开始几个字节?
任何其他解决方案也是受欢迎的,只要它不需要读取/重写文件的全部内容。
答案 0 :(得分:0)
这取决于文件系统类型,但大多数答案都是否定的。文件分配表是指向特定块或inode的指针 - “文件数据”的连续块。
它们支持被缩短 - 从技术上讲,你读取整个块,但是当你点击“文件结束”标记时停止。但实际上并没有“跳过”的机制。要删除前几个字节,您可以覆盖它们,或者必须重写并重新对齐整个文件。
像dd
之类的东西可以相当有效地完成这项工作。
这些链接可能相关:
https://unix.stackexchange.com/questions/13907/delete-the-first-n-bytes-of-files Remove number of bytes from beginning of file