在 Linux(和/或其他 Unix)中是否可以从头开始“收缩”文件?我想将它用于持久队列(没有现有的实现适合我的需要)。从文件末尾我猜它是可能的 truncate()。
问问题
3348 次
3 回答
1
如果您使用的是 ext4、xfs 或其他一些现代文件系统,从 Linux Kernel 3.15 开始,您可以使用:
#include <fcntl.h>
int fallocate(int fd, int mode, off_t offset, off_t len);
与FALLOC_FL_COLLAPSE_RANGE
国旗。
http://manpages.ubuntu.com/manpages/disco/en/man2/fallocate.2.html
于 2019-10-01T23:26:23.937 回答
-2
是的,您可以使用cut
或tail
删除文件的某些部分。
cut -b 17- input_file
tail -c +17 input_file
这将从第 17 个字节开始输出 input_file 的内容,有效地删除文件的前 16 个字节。请注意,该cut
示例还将在输出中添加换行符。
于 2015-08-25T17:21:12.333 回答
-5
我使用以下 Python 脚本截断了作为 64 000 000 个字节的参数的文件:
#!/usr/bin/env python
import sys
import os
file = sys.argv[1]
f = os.open(file, os.O_RDWR)
os.ftruncate(f, 64000000)
os.close(f)
于 2011-07-09T08:23:48.197 回答