Unix shell脚本截断一个大文件

时间:2012-11-27 00:23:19

标签: bash shell truncate

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

cp /dev/null [filename]

但是我将在生产环境中自动将其作为一个cron作业运行 - 只需在此处发布,看看你们在做类似的事情时是否遇到任何问题。

4 个答案:

答案 0 :(得分:108)

只是添加另一个答案,

: > filename

:是bash中的无操作,因此这实际上只是打开文件进行写入(当然会截断文件),然后立即将其关闭。

编辑:正如shellter评论的那样,你实际上并不需要一个命令来配合重定向:

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

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

答案 1 :(得分:62)

我在debian上使用了以下命令

truncate -s 0 filename

答案 2 :(得分:11)

这对我来说似乎很合理。当然,Unix会让你以50种不同的方式做到这一点。例如,

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

答案 3 :(得分:2)

trunc filename

适用于UNIX的AIX风格