tmpwatch与find命令清理旧文件的注意

      访问: 463 次      评论    

1、tmpwatch 不会删除其作用的目录(即便目录变成空的了)

$ ls -l ligb/
total 10160
-rw-r--r-- 1 user1 user1 10383462 Apr 21  2017 10m.rar

$ /usr/sbin/tmpwatch -m 7d ligb
$ ls -l    #(ligb目录还在)
drwxr-xr-x  2 root     root          4096 Apr 21  2017 ligb


2、注意 find 命令查找时,输出结果中很可能会包含所查找的目录本身

$ ls -l ligb/
total 4
-rw-rw-r-- 1 user1 user1 395 Mar 18  2017 output

$ find ligb -mtime +30
ligb    #(被查找的当前目录也出现在了结果中)
ligb/output


这种情况下如果运行命令 find ligb -mtime +30  -exec rm -rf {} \;

就会把 ligb 目录给删除,然后find 命令提示错误 No such file or directory:

$ find ligb -mtime +30  -exec rm -rf {} \;
find: `ligb': No such file or directory


可以使用 -path 参数将当前被查找的目录排除在结果之外:

$ find ligb2 ! -path ligb2 -mtime +30
ligb2/output


以避免出现你所意想不到且不希望的结果(如把被查找的目标目录本身给删除了,从而造成其他错误)。

添加新评论