我想从我的apache日志中创build不到43天前创build的所有gzip文件。
作为一个testing,我只是从find中列出我的文件:
sudo find /var/log/apache2/ -mindepth 1 -ctime -43 -name "*.gz" -ls
但是结果包括了在8月份(安装服务器时)以及更新的文件创build的文件:
8781890 4 -rw-r----- 1 root adm 186 Aug 10 06:44 /var/log/apache2/error.log.13.gz 8781923 4 -rw-r----- 1 root adm 1717 Aug 17 06:29 /var/log/apache2/error.log.12.gz stat /var/log/apache2/error.log.13.gz File: `/var/log/apache2/error.log.13.gz' Size: 186 Blocks: 8 IO Block: 4096 regular file Device: 807h/2055d Inode: 8781890 Links: 1 Access: (0640/-rw-r-----) Uid: ( 0/ root) Gid: ( 4/ adm) Access: 2014-11-13 10:34:14.444059675 +1030 Modify: 2014-08-10 06:44:11.000000000 +0930 Change: 2014-11-09 06:29:48.035930468 +1030
为什么ctime参数不适用?
这些文件被旋转,在这个过程中,他们的ctime改变了。 每当你touch
一个文件或改变它的内容,你将修改它的时间戳,这将覆盖旧的。 这会误导您的查找命令。
ls
列表显示mtime
; 因为这是默认显示的内容,除非指定-c
(ctime)标志
所以在本质上 您的ctime标准匹配文件, ls显示mtime 。
所以试着调整一下你的find命令
sudo find / var / log / apache2 / -mindepth 1 -mtime -43 -name“* .gz”-ls
它应该按照你的预期工作