如何在命令行中清除文件的内容?
我有一个日志文件,里面有一堆我不需要的东西。
我知道如何将内容打印到屏幕上:
cat file.log
我知道如何逐行编辑文件:
nano file.log
但我不想逐行删除。有什么方法可以在不破坏文件的情况下,只用一个命令就能完成吗?
我有一个日志文件,里面有一堆我不需要的东西。
我知道如何将内容打印到屏幕上:
cat file.log
我知道如何逐行编辑文件:
nano file.log
但我不想逐行删除。有什么方法可以在不破坏文件的情况下,只用一个命令就能完成吗?
你可以使用用户命令: truncate
truncate -s 0 test.txt
(“-s 0 "指定大小) http://www.commandlinefu.com/commands/view/12/empty-a-file
你可以这样做:
echo -n "" > file.log
>
使用
echo -n
将会把空的输入写到文件中(有效地把空的输入附加到文件中(实际上什么也没做,只是把它写到了文件中)。
: > file.log
与 Bash 中的 > filename
相同,但可以在更多的 shell 中工作 (credit) . 将true
内置的输出重定向到filename
(没有输出)。
ZSH
>! filename
ZSH将使用io重定向操作符>
来保护用户不被clobber文件。
如果你想让ZSH使用Bash的重定向行为,在没有保护文件不被clobbering的情况下,你需要为你的shell设置>!
选项。 http://zsh.sourceforge.net/Doc/Release/Redirection.html
下面的命令应该也可以使用:
cat /dev/null > file.log
$ rm file.log; touch file.log
或
$ cat > file.log
后面是 control-d
。这里有一个单一的命令版本:
$ dd if=/dev/null of=file.log
如果你需要sudo到超级用户权限来访问文件,那么接受的答案将是无效的。使用这个方法可以:
truncate -s0 file
sudo truncate -s0 file
或者明确地使用sudo:
&001
更多信息请看这里 http://www.commandlinefu.com/commands/view/12/empty-a-file
另外,如果你有多个文件,你可以使用以下方法:
for file in /path/to/file/*; do > $file; done
``` &001
这对同一目录下的日志文件很有帮助。