Linux下查找文件的命令有两个;locate 和find
一、Locate命令
非实时的,查找时根据全系统文件数据库进行的,模糊查找,简单介绍下它的两个选项:
#locate -i
//查找文件的时候不区分大小写 比如:locate –i test
#locate -n
//只显示查找结果的前N行 比如:locate -n 5 test
二、Find命令
使用格式 : find [指定查找目录] [查找规则] [查找完后可执行操作
查找路径:默认为当前目录
查找标准:默认为指定路径下的所有文件
查找到以后的处理操作:默认为显示
1、[查找规则]
1.1 根据文件名查找
# -name //根据文件名查找(精确查找)
# -iname //根据文件名查找,但是不区分大小写
1.2 根据文件所属用户和组来查找文件
# -user //根据属主来查找文件
# -group //根据属组来查找文件
1.3 -a and -o and –not的使用
# -a 连接两个不同的条件(两个条件必须同时满足)
# -o 连接两个不同的条件(两个条件满足其一即可)
# -not 对条件取反的
1.4 根据文件时间戳的相关属性来查找文件
# -atime
# -mtime
# -ctime
# -amin
# -mmin
# -cmin
所以这里atime,mtime,ctime就是分别对应的“最近一次访问时间”“最近一次内容修改时间”“最近一次属性修改时间”,这里的atime的单位指的是“天”,amin的单位是分钟
find . -mtime -2
在.下查最近两天内改动过的文件
find . -atime -1
查1天之内被存取过的文件
find . -mmin +60
在.下查60分钟前改动过的文件
find . -amin +30
查最近30分钟前被存取过的文件
1.5 根据文件类型来查找文件
# -type
f:普通文件;d:目录文件;l:链接文件;b:块设备文件;c:字符设备文件;p:管道文件;s:socket文件
1.6 根据大小来查找文件
# -size
#find /tmp -size 2M //查找在/tmp 目录下等于2M的文件
#find /tmp -size +2M //查找在/tmp 目录下大于2M的文件
#find /tmp -size -2M //查找在/tmp 目录下小于2M的文件
1.7 根据文件权限查找文件
# -perm
#find . -perm 755 //在当前目录下权限是755的文件
#find . -perm +222
//表示只要有一类用户(属主,属组,其他)的匹配写权限就行
#find . -perm -222
//表示必须所有类别用户都满足有写权限
1.8 -nouser and -nogroup
#find / -nogroup –a –nouser 在整个系统中查找既没有属主又没有属组的文件(这样的文件通常是很危险的,作为系统工程师的我们应该及时清除掉)
2、[查找后的操作]
# -print //默认情况下的动作
# -ls //查找到后用ls 显示出来
# -ok [commend] //查找后执行命令的时候询问用户是否要执行
# -exec [commend] //查找后执行命令的时候不询问用户,直接执行
这里要注意{}的使用:替代查找到的文件
#find /tmp -atime +30 –exec rm –rf {} \; #删除查找到的超过30天没有访问过文件
我们也可以使用xargs来对查找到的文件进一步操作find命令把匹配到的文件传递给xargs命令,而xargs命令每次只获取一部分文件而不是全部,不像-exec选项那样。这样它可以先处理最先获取的一部分文件,然后是下一批,并如此继续下去。
三、其他查找命令
which: 定位一个命令的完整路径,有可能会显示出命令的别名
whereis:与which类似,而且会额外的给出给出该命令的man页的完整路径
whatis:将会在whatis数据库中查询file,当你想确认系统命令和重要的配置文件的时候