adr*_*min 9 unix file-management bash
我有一个 150GB 的 xml 文件,我想将其缩短(即截断)到大约 1GB - 是否有我可以使用的简单(bash 或类似)命令,或者我是否必须走编程路线(在 vi 或 emacs 中编辑它)即使在大型铁系统上也是噩梦)?
(我并不特别担心信息丢失,我想要一个更短的文件,这样我就可以测试一个软件,而不用等待几个小时的答案,一个更短的文件将允许我这样做。)
Joh*_*024 37
要将文件截断为 1 GB,请使用以下truncate命令:
truncate -s 1G file.xml
Run Code Online (Sandbox Code Playgroud)
截断的结果可能不是有效的 XML 文件,但我认为您理解这一点。
对于GNU版本的文件truncate是在这里和文档BSD版本是在这里
mul*_*t3d 15
假设您要截断并提取 150 GB 文件的前 1 GB:
与head:
head -c 1G infile > outfile
请注意,G后缀可以替换GB为 1000 而不是 1024。
或与dd:
dd if=infile of=outfile bs=1M count=1024
或者像 Wumpus Q. Wumbley 的回答一样,dd可以在原地截断。
小智 14
在可能的情况下,我会使用truncateJohn1024 的回答中的命令。不过,这不是标准的 unix 命令,所以有一天您可能会发现自己无法使用它。在这种情况下,dd也可以进行就地截断。
dd的默认行为是在复制结束时截断输出文件,因此您只需给它一个长度为 0 的输入文件并告诉它在所需的截断点开始写入:
dd if=/dev/null of=filename bs=1048576 seek=1024
Run Code Online (Sandbox Code Playgroud)
(这与ddmultithr3at3d 的答案中的复制和截断不同。)
请注意,我使用了 1048576 和 1024,因为 1048576*1024 是所需的大小。我避免BS =1米因为这是一个“便携性”的答案,经典dd只知道后缀k,b和w。
| 归档时间: |
|
| 查看次数: |
2509 次 |
| 最近记录: |