xpt*_*xpt 29 linux shell perl ubuntu
我想通过蛮力缩小文件的大小,也就是说,我不在乎其余的,我只想将文件切成两半,然后丢弃其余的。
首先想到的是 Perl 的truncate。我正在关注该页面上的示例并做了完全相同的事情:
seq 9 > test.txt
ls -l test.txt
perl -we 'open( FILE, "< ./test.txt" ) && truncate( FILE, 8 ) && close(FILE);'
Run Code Online (Sandbox Code Playgroud)
但文件仍然具有相同的大小:
$ ls -lgG test.txt
-rw-rw---- 1 18 2013-08-08 09:49 test.txt
Run Code Online (Sandbox Code Playgroud)
我怎样才能使这项工作?
Chr*_*ton 77
您可能需要使用truncate 命令:
truncate --size=1G test.txt
Run Code Online (Sandbox Code Playgroud)
SIZE 可以指定为字节、KB、K、MB、M 等。我假设您可以手动计算所需的大小;如果没有,您可能可以使用 stat 命令来获取有关文件当前大小的信息。
ric*_*ici 21
perl -we 'open( FILE, "< ./test.txt" ) && truncate( FILE, 8 ) && close(FILE);'
Run Code Online (Sandbox Code Playgroud)
打开文件进行阅读。但是,要截断文件,您需要对其进行修改,因此只读文件句柄将不起作用。您需要使用“修改”模式 ( "+>")。
作为一个附带问题,当人们让系统调用无声地失败然后询问出了什么问题时,它总是让我感到惊讶。诊断问题的一个重要部分是查看产生的错误消息;即使你不理解它,它也会让你寻求帮助的人的生活变得更轻松。
以下内容会更有帮助:
perl -we 'open(FILE, "<", "./test.txt") or die "open: $!";
truncate(FILE, 8) or die "truncate: $!";
close(FILE);'
Run Code Online (Sandbox Code Playgroud)
尽管无可否认,那只会报告“无效论点”。尽管如此,这是有用的信息,很可能会让您得出开放模式错误的结论(就像我所做的那样)。
Iva*_*hev 11
您可以使用tail剪切最后 1000 个字节,例如:
tail -c 1000 文件 > 文件 2
所述-c输出最后1000个字节的文件,以获得更多选项的:
人尾
用刚生成的文件替换原始文件:
mv 文件 2 文件
| 归档时间: |
|
| 查看次数: |
34733 次 |
| 最近记录: |