查找文件,可以使用whereis、locate命令。

    实际排查问题时,查找特定时间变动过的文件,查找与给定文件有时间关系的文件就需要使用更加强大的查找命令find


whereis


选项

-b:查找二进制可执行文件

-m:查找mamual文件

-s:查找来源档案

-u:查找非上述3个类型的其他文件


locate


配置文件路径    /etc/updatedb.conf


库文件路径    /var/lib/mlocate


安装locate

# yum install -y mlocate

更新库

# updatedb    第一次查找需要更新查找库

   


一、find参数与选项

二、find与指定文件比较参数

三、find实例

四、find查找今天修改的文件


一、find参数与选项


-print:列出结果,使用find命令,默认执行


-mtime n:文件修改时间,对文件数据的最近一次修改是在 n*24 小时之前


-mmin n:对文件数据的最近一次修改是在 n 分钟之前


-ctime n:文件状修改时间,对文件状态的最近一次修改是在 n*24 小时之前。


-cmin n:件状态修改,对文件状态的最近一次修改是在 n 分钟之前。


-atime n:访问时间,对文件的最近一次访问是在 n*24 小时之前。


-amin n:最后访问时间,对文件的最近一次访问是在 n 分钟之前。


-mtime : 指定时间曾被改动过的文件,意思是文件內容被更改过


-ctime : 指定时间曾被更改过的文件,意思是文件权限被更改过


-atime : 指定时间曾被存取过的文件,意思是文件被读取过


-newer file:file为已存在的文件,意为列出比file时间更新的文件


-type:指定文件类型   

# find /var -type p 找出文件类型为FIFO的文件,其他文件类型:f普通文件,d目录,(b,c)设备文件,l链接文件,s为socket文件

-uid n:指定文件属主uid    

# find /root -uid 0 -type f –print

-gid n:指定文件属组gid    

# find /root -gid 0 -type f –print

-user:指定文件属主名    

# find /home -user youshine -type f –print

-group :指定文件属组名    

# find /home -group youshine -type f –print

-nouser: 查找系统中没有属主的文件     

# find / nouser -type f -print

-nogroup:查找系统中没有属组的文件    

# find / nogroup -type f –print

-name:查找文件名相匹配的文件     

#find / -name "*mysql*"

-size:查找匹配大小的文件        

# find /var -size +1M    查找var目录下,大于1MB的文件

-exec COMMAND:查找后使用额外命令处理查找结果    

# find /var -type p -exec tar -cvf test.tar {} \;    {}表示查找到的结果,-exec指定额外处理命令,\为转义字符,额外命令到\;结束

-perm +mode | –mode:+为囊括所有元素,-为包含任一元素    

# find ./ –perm -0755   那么只要文件权限满足755的2755,6755,4755都在结果中
# find ./ –perm +0755    使用+0755,那么就算是0005,0055等满足一个条件,都在结果内

 



二、find与指定文件比较参数


-anewer file  
对文件的最近一次访问比 file 修改时间要晚。如果命令行中 -follow 在 -anewer 之前,(也只有在这种情况下 -anewer会受 -follow 的影响)。


-cnewer file  
对文件状态的最近一次修改比 file 修改时间要晚。如果命令行中 -follow 在 -cnewer 之前,(也只有在这种情况下-cnewer 会受 -follow 的影响)。


-newer file

# find ./ -newer /etc/passwd -type f –print   查找当前目录下时间比passwd文件新的文件


三、find实例    

找出 3 天"以前"被改动过的文件 (前第三天以前 → 2015/03/26 12:00 以前的文件) (> 72 小时)    

# find ./ -mtime +3 -type f -print


找出 3 天內被改动过的文件 (2015/03/26 12:00 ~ 2015/03/29 12:00 內的文件) (0 ~ 72 小时內)  

# find ./ -mtime -3 -type f -print


找出前第 3 天被改动过的文件 (2015/03/25 12:00 ~ 2015/03/26 12:00 內的文件) (72 ~ 96 小时)  

# find ./ -mtime 3 -type f -print


找出第 3 天被改动过的文件 (也可以这样写)  

# find ./ -mtime +2 -mtime -4 -type f -print


找出/etc目录下,大于50k属主非root的文件,并备份到/tmp下

# cd /tmp
# find /etc -size +50k -a ! -user root -exec tar -zcvf test.tar {} \;    -a -o,分别为and 和or

 


四、find查找今天修改的文件


#查找当前目录一天之前到此时之间修改的文件,也就是过去的24小时内修改的文件。  
find ./ -mtime 0

#查找当前目录小于1天(1*24)之前的修改过的文件,也就是24小时内修改的文件,这个和上面的结果一样。  
find ./ -mtime -1

#查找当前目录等于1天(1*24)之前的修改过的文件,也就是24小时之前(包括第24小时)修改的文件  
find ./ -mtime 1

#查找当前目录大于1天(1*24)之前的修改过的文件,也就是至少2天之前修改的文件。mtime后的参数只能是整数,所以大于1的要从2开始,下面的命令等同于-mtime 2。  
find ./ -mtime +1

时间是以 24 小时为一个单位,而不是以天的,从当日起始时开始而不是从24小时之前。  
2015/03/29 12:00 时间开始找一天內的,会列出 2015/03/28 12:00 ~ 2015/03/29 12:00 时间內的文件

 

部分内容转自http://www.nginx.cn/2754.html