在Linux下文件查找命令有两个---locate和find
一、locate 命令
只对其生成的数据库经行遍历(生成数据库的命令updatedb),速度快但是locate只能对
文件进行模糊匹配,精度不高,非实时的
-i: //查找文件的时候不区分大小写实例:locate -Ipasswd
-n://只显示查找结果的前n行 实例:locate -n 5 passwd
查询之前需要执行 updatedb命令
二、find命令
实时、精确、支持众多查找标准、遍历指定目录中的所有文件完成查找,速度慢
1、使用格式:find [指定查找目录][查找规则][查找完后执行的action]
查找路径:默认当前路径 查找标准:默认指定路径下的所有文件 处理动作:默认为显示
例如:find /etc/tmp/root -name passwd
根据文件名查找
# -name //根据文件名查找(精确查找)
#-iname //根据文件名查找,但是不区分大小写
#-regex PATTERN 基于正则表达式进行文件名匹配
2、文件名通配
*表示 通配的任何意义的字符
find /etc -name "*passwd*"
?表示通配任意的单个字符
find/etc -name "passwd?"
[]通配中刮号里面的任意一个字符
find /etc/ -name "[ab].sh"
3、使用文件所属用户和组查找文件(uid gid)
# -user //根据属主来查找文件
find /tmp -uid 0
# -group //根据属组查找文件
find /tmp -gid o
4、-a and -o and-not的使用
-a :连接两个不同条件(两个条件必须同时满足)
-o :连接两个不同的条件(两个条件满足其中之一即可)
-not :对条件取反
find /etc/ -name "-*.sh"-a-user root
find /etc/-not -user root
find ./-not -user user1-o -not -type d
find ./ -not \( -useruser1 -a -type d \)\
5、根据时间戳的相关属性来查找文件
stat命令查看一个文件的时间信息
stat /etc/ passwd
atime :最近一次访问时间
mtime :最近一次内容修改时间
ctime :最近一次属性修改时间
实例:
find /tmp -atime +5 //表示查找在5天内没有访问过的文件
find /tmp -atime -5 //访问在5天内访问过的文件
其他同理
6、根据文件类型来查找文件
-tpye
f: //普通文件
d: //目录文件
l: //链接文件
b: //块设备文件
c: //字符设备文件
p: //管道文件
s: //socket文件
find /tmp-type s
7、根据大小来查找文件
-size [+|-]
find /tmp -size 2M //查找在/tmp目录下等于2M的文件
find /tmp -size +2M //查找在/tmp目录下大于2M的文件
find /tmp -size -2M //查找在/tmp目录下小于2M的文件
8、根据文件权限查找(-perm)
-perm MODE 精确查找
/MODE :任意一位匹配即满足条件
-MODE:文件权限能完全包含此MODE时才符合条件
-644
find ./ -per1 -001
find /tmp -perm 755 //查找在/tmp目录下权限是755的文件
find /tmp -perm +222 //表示只要有一类用户(属主/属组/其他)的匹配写权限就行
find /tmp -perm -222 //表示必须所有类别用户都满足有写权限
9、-nouser and -nogroup
find / -nogrop -a -nouser //在整个系统中查找即没有属主又没有属组的文件(这样的文件
通常很危险,应该及时清除,否则后患无穷)
10、[查找执行的action]
-print //默认情况下的动作
-ls //查找后用ls 显示出来
-ok [commend] //查找后执行命令的时候询问用户是否要执行
-exec [commend] //查找后执行命令的时候不询问用户,直接执行
find /tmp -name "*.sh" -exec chmod u+x {}\; {} 替代查找到的文件
find /tmp -atime +30 -exec rm -rf{} \;