标签: truncate

清空文件内容的最有效方法

我知道从文件中删除所有条目的三种方法。

他们是

  • >filename
  • touch filename1
  • filename < /dev/null

在这三个中,我滥用>filename最多,因为它需要最少的击键次数。

但是,我想知道就大日志文件和小文件而言,这三个中哪个最有效(如果有更有效的方法)。

另外,这三个代码是如何操作和删除内容的?


1编辑:正如在这个答案中所讨论的,这实际上并没有清除文件!

shell-script files truncate

257
推荐指数
3
解决办法
43万
查看次数

在 Linux 中粘贴到终端时,行长度是否有任何限制?

我正在尝试从 发送消息kafka-console-producer.sh,即

#!/bin/bash
if [ "x$KAFKA_HEAP_OPTS" = "x" ]; then
    export KAFKA_HEAP_OPTS="-Xmx512M"
fi
exec $(dirname $0)/kafka-run-class.sh kafka.tools.ConsoleProducer "$@"
Run Code Online (Sandbox Code Playgroud)

然后我通过 Putty 终端粘贴消息。在接收端,我看到消息大约被截断到 4096 字节。我在卡夫卡的任何地方都没有看到设置了这个限制。

这个限制可以来自 bash/terminal 或 Putty 吗?

linux bash terminal putty truncate

14
推荐指数
1
解决办法
2048
查看次数

是否可以在开头截断文件(就地,相同的索引节点)?

可以删除 a 的尾随字节,file而无需写入新文件 ( > newfile) 并将其移回 ( mv newfile file)。这是通过以下方式完成的truncate

truncate -s -1 file
Run Code Online (Sandbox Code Playgroud)

可以删除前导字节,但通过移动它(这会改变 inode)(对于某些版本的 tail):

tail -c +1 file > newfile ; mv newfile file
Run Code Online (Sandbox Code Playgroud)

那么:如何在不移动文件的情况下做到这一点?
理想情况下,就像截断一样,即使对于非常大的文件也只需要更改几个字节。

注意:sed -i将更改文件索引节点,因此,即使它可能有用,也不是这个问题的答案(IMO)。

shell tail files truncate

9
推荐指数
2
解决办法
6110
查看次数

从 /dev/zero 写入文件和截断之间的区别

$ timeout 1 cat /dev/zero > file1

$ wc -c file1
270422016 file1

$ du file1
264084 file1
Run Code Online (Sandbox Code Playgroud)

问题 :

(1)270422016个空字符怎么出来就是264084字节(即258M)。

$ truncate -s 270422016 file2

$ wc -c file2
270422016 file2

$ du file2
0 file2
Run Code Online (Sandbox Code Playgroud)

问题 :

(2)file2已使用与file1之前相同数量的空字符创建,但 的大小file2为零,为什么?

(3) 什么是/dev/zero做了而truncate没有做的,反之亦然?

disk-usage devices truncate

4
推荐指数
1
解决办法
1656
查看次数

“截断”中的“最多”修饰符是什么?

手册显示truncate我可以添加<“最多”。

这个是来做什么的?

这听起来像是我的默认设置。

truncate

4
推荐指数
1
解决办法
491
查看次数

标签 统计

truncate ×5

files ×2

bash ×1

devices ×1

disk-usage ×1

linux ×1

putty ×1

shell ×1

shell-script ×1

tail ×1

terminal ×1