使用 -ctime +0 查找命令进行测试

使用 -ctime +0 查找命令进行测试

以下命令将删除超过 100 天的目录和子目录:

find /var/tmp -type d -ctime +100 -exec rm -rf {} \;

但实际上我想执行测试来验证该命令是否会删除所有目录。

所以我设置-ctime +0(为了执行删除0天前的目录)

find /var/tmp -type d -ctime +0 -exec rm -rf {} \;

但 find 命令没有删除目录。

我如何更改-ctime才能执行测试?

答案1

man的页面说find的是-ctime

-ctime n
       File's status was last changed n*24 hours ago.  See the comments
       for -atime to understand how rounding affects the interpretation
       of file status change times.

这是关于-atime

-atime n
       File was last accessed n*24 hours ago.  When  find  figures  out
       how  many  24-hour  periods  ago the file was last accessed, any
       fractional part is ignored, so to match -atime +1, a file has to
       have been accessed at least two days ago.

因此,您应该期望-ctime 1根据舍入删除 1 天前或更长时间更改的文件,并且应该将其设置-ctime +-1为 以获得您想要的效果。

为了防止/var/tmp自身被删除,还指定并在实验时始终首先打印出将要工作的-mindepth 1目录:find

 find /var/tmp -mindepth 1 -type d -ctime +-1  -print

在进行破坏性操作之前:

  find /var/tmp -mindepth 1 -type d -ctime +-1 -exec rm -rf {} +

(我会使用+而不是\;不需要多次调用 rm 。(或者,您可以查看使用-delete而不是使用-exec rm....,但在这种情况下find也需要删除这些目录下的文件,同时将它们直接保留在下面/var/tmp

答案2

此命令删除最后一天创建的目录。

find /var/tmp -type d -ctime -1 -exec rm -rf {} \;

相关内容