查找文件,可以使用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
本文出自 “Arvin Lau” 博客,请务必保留此出处http://64314491.blog.51cto.com/2784219/1662175
原文地址:http://64314491.blog.51cto.com/2784219/1662175