以下命令将删除超过 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 {} \;