Bash 找到大文件并清空它们

Bash 找到大文件并清空它们,bash,cron,Bash,Cron,下面的代码会在/opt目录中找到大日志文件(超过1GB)并清空它们吗 find/opt/-type f-size+1G-exec cat>/dev/null{} 谢谢。这是必需的: find /opt/ -type f -size +1G -exec cp /dev/null {} \; 代码中的重定向会导致cat将大文件写入/dev/null 添加名称子句可能更安全: find /opt/ -type f -name "*.log" -size +1G -exec cp /dev/null

下面的代码会在/opt目录中找到大日志文件(超过1GB)并清空它们吗

find/opt/-type f-size+1G-exec cat>/dev/null{}


谢谢。

这是必需的:

find /opt/ -type f -size +1G -exec cp /dev/null {} \;
代码中的重定向会导致
cat
将大文件写入/dev/null

添加
名称
子句可能更安全:

find /opt/ -type f -name "*.log" -size +1G -exec cp /dev/null {} \;

您面临的问题是重定向(
)是shell的一个属性,而
cat
对此一无所知

对于您的问题,最简单的解决方案可能只是将文件清空放在一个小的包装脚本中(它需要用反斜杠转义
$
,以便herdoc不展开
$@
$f
,而是直接将它们写入包装脚本)


$cat>/tmp/wrapper-script.sh如果您有GNU coreutils,您可以像这样使用
truncate

find /opt/ -type f -size +1G -exec truncate -s0 {} \;

删除这些文件肯定比覆盖它们更有意义?或者压缩它们
find/opt/-typef-size+1G-exec bzip2-v{}+
有没有解决您的问题的答案?如果是这样,请考虑接受它作为您的答案-点击空心蜱/支票旁边的选票计数。如果没有,请说出什么不起作用,以便我或其他人可以进一步帮助您。谢谢你的意思是cp还是mv?我想OP想要
cp
,因为他可能不想删除日志文件。我不想删除日志文件,但想清空它。为什么不使用cat?使用
cat
仍然可以,但是使用
cp
更简单、更干净,也许你可以接受其中一个答案?@user10573594如果你使用
cat
,你需要
,这是一个shell重定向,但是你的
-exec
没有在shell中运行。因此,如果您想使用shell重定向,您需要
-execbash-c'cat…'\bash
cat
)。所以,
cp
就像菲利普说的那样更干净。