![“截断”中的“最多”修饰符是什么?](https://linux22.com/image/227990/%E2%80%9C%E6%88%AA%E6%96%AD%E2%80%9D%E4%B8%AD%E7%9A%84%E2%80%9C%E6%9C%80%E5%A4%9A%E2%80%9D%E4%BF%AE%E9%A5%B0%E7%AC%A6%E6%98%AF%E4%BB%80%E4%B9%88%EF%BC%9F.png)
答案1
让我们从两个文件开始,
1M.dat
- 1 MiB 数据(使用 生成truncate --size 1M 1M.dat
)10M.dat
- 10 MiB 数据(使用 生成truncate --size 10M 10M.dat
)
truncate --size 5M {file}
首先考虑应用于这两个文件的命令。尽管第二个文件将按预期被截断,但第一个文件将被截断增加大小以达到所需的 5 MiB 文件长度。
truncate --size '<5M' {file}
现在考虑应用于这两个文件的命令。第二个文件仍将按预期被截断,但第一个文件将保持不变,因为它的长度已小于 5 MiB。将命令读为“将文件截断为最多5 兆字节”。
答案2
如果文件较小,则不<
truncate
添加零字节到文件末尾,直到达到大小。
所以这个例子可能是大多数情况下你想要的:
truncate -s '<1M' filename
这将仅保留文件的前 1MB。
要仅保留文件的末尾,您可以使用tail
:
tail -n 1000 filename > tmpfile && mv tmpfile filename