如何清除文件中的文本?

如何清除文本文件中存在的文本而不打开它?

我的意思是例如我有一个文件作为hello.txt,其中包含一些文本数据以及如何清除该文件中的总文本而不打开它。

只需用CTRL + ALT + T打开终端并输入

> hello.txt 

就是这样,你的文件中的数据将被清除,甚至打开它。

例:

在此处输入图像描述

截断文件最简单的方法是将shell no-op命令(:)的输出重定向到要擦除的文件。

 : > hello.txt 

我也将使用rajagenupula的答案重定向。 但是有一点灵活性。 打开终端并输入,

 cat > hello.txt 

然后按Ctrl + C. 它将清除以前的文件。 如果你想要这么多,那就好了。

如果您希望在擦除文件后可以执行更多操作。 通过这种方式,您不仅可以在不打开的情况下擦除文件,还可以在文件中编写一些格式正确的行。 假设您希望在擦除文件后写“Ubuntu是最好的操作系统”,就这样做

 cat > hello.txt Ubuntu is the best OS 

然后按Ctrl + C. 现在,以前的文件已被删除。 与此同时,当我把它们放在两行时,单词就在那里。

看例子:

在此处输入图像描述

我必须一直使用日志文件。 我找到的最简单的方法是使用以下命令:

 cat /dev/null > hello.txt 

这将删除文件内容的同一个,并为您留下一个空文件,而无需在编辑器中打开它,选择文本,任何这些东西。 更具体地说,它的作用是用“/ dev / null”的内容替换文件的内容,或者什么也不做。 实际上它很漂亮。

唯一需要注意的是,您当前登录的用户必须具有对该文件的写入权限。

如果一个文件是用名称hello.txt创建的,并且提供了一些文本,那么终端ctrl + alt + t中的下面命令将删除hello.txt文件中的所有文本,

 echo "" > hello.txt 

在此处输入图像描述

另一种方法 – 将/dev/null转换为文件

 xieerqi:$ cat testFile.txt Filesystem 1K-blocks Used Available Use% Mounted on /dev/sda1 115247656 83100492 26269816 76% / none 4 0 4 0% /sys/fs/cgroup udev 2914492 4 2914488 1% /dev tmpfs 585216 1152 584064 1% /run none 5120 0 5120 0% /run/lock none 2926072 98096 2827976 4% /run/shm none 102400 76 102324 1% /run/user xieerqi:$ cp /dev/null testFile.txt xieerqi:$ cat testFile.txt xieerqi:$ 

不是最短的答案,但……

这个答案基于超级用户的另一个。 虽然不是最短的bash命令,但truncate对于普通新手来说是最具可读性的:

 $ echo Hello > Hello.txt $ echo World! >> Hello.txt $ cat Hello.txt Hello World! $ truncate -s 0 Hello.txt $ ll Hello.txt -rw-rw-r-- 1 rick rick 0 Mar 20 17:32 Hello.txt 

truncate命令一起使用的参数:

  • “-s”设置大小
  • “0”大小为零

清除除10,000个字节以外的所有内容

truncate一个优点是你可以指定保留多少,而不仅仅是零:

 $ truncate -s 10000 Hello.txt 

…将在前10,000个字节后截断所有内容。 如果程序疯狂并将许多兆字节的数据转储到一个小的日志文件中,这可能很有用:

  • 运行truncate命令以获得合理的较大正常大小10K
  • 使用文本编辑器打开文件,然后按“ 结束”
  • 突出显示和PgUp删除不属于的其余字节(通常可由ASCII垃圾字符识别)。

所以,我看到很多重定向被用来回答这个问题;)

与组合有点不同的方法: rm&touch

 rm hello.txt && touch hello.txt 

是的……还有另一个骗子!

因此,使用此命令组合时,文件hello.txt未打开 ,最后您仍然在其位置清除文件hello.txt。 就像你想要的一样!

 vi filename -c ':1,$d' -c ':wq' 

因为它拥有特别的许可,对我来说是最好的