是否可以在Linux(和/或其他Unix)上“缩小”文件?我想将它用于持久队列(没有适合我需要的现有实现)。从文件的结尾我猜这可能是truncate()。
答案 0 :(得分:0)
如果您正在使用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
答案 1 :(得分:-2)
是的,您可以使用cut
或tail
删除部分文件。
cut -b 17- input_file
tail -c +17 input_file
这将从第17个字节开始输出input_file的内容,从而有效地删除文件的前16个字节。请注意,cut
示例还将为输出添加换行符。
答案 2 :(得分:-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)