Unix shell脚本截断大文件

问题描述 投票:81回答:4

我正在尝试编写一个Unix脚本,它将截断/清空一个文件,当文件达到3GB的空间时,该文件将被应用程序连续写入/打开。我知道下面的命令可以做到:

cp /dev/null [filename]

但是我将在生产环境中自动将其作为cron作业-只是在此处发布以查看你们在执行类似操作时是否遇到任何问题。

bash shell truncate
4个回答
109
投票

只需添加另一个答案,

: > filename

[:是bash中的无操作对象(兼容POSIX),因此,这实际上只是打开要写入的文件(当然会截断该文件),然后立即将其关闭。

编辑:正如Shellter所说,您实际上不需要命令来进行重定向:

$ echo foo > foo.txt
$ cat foo.txt
foo
$ > foo.txt
$ cat foo.txt
$

简单的重定向本身将清除文件。


62
投票

我在debian上使用了以下命令

truncate -s 0 filename

11
投票

在我看来,这很合理。当然,Unix可以让您执行大约50种不同的操作。例如,

echo -n "" >filename
cat /dev/null >filename

2
投票

trunc filename

适用于UNIX的AIX风格

© www.soinside.com 2019 - 2024. All rights reserved.