本节概要
find 命令
locate 命令
whereis 命令
which 命令
type 命令
环境准备
操作系统:Centos7.2、Centos6.5。
一、文件查找
Linux 中文件查找命令较多,本节概要中提到的5条命令为工作中较常使用的命令。
1. find
作用:find 是工作中最常见和最强大的查找命令,基本可以找到任何我们想要查找的文件。
格式:find <指定目录> <指定条件> <指定动作>
如果不加参数,则find默认会搜索当前目录及其子目录,并且不会过滤任何的结果。
举例:
–name
find . –name “a*” #搜索当当前目录下所有以a开头的文件。
–type
find . –type f #搜索当前目录下所有的普通的文件。
–size
find . –size +2M #当前目录下所有大于2M的文件
find . –size -2M #当前目录下所有小于2M的文件
–mtime、-atime、-ctime
ctime:change time,文件权限和文件属性的修改。查看 ls -lc
atime:文件访问时间,即文件被读取或者被执行的时间。查看ls -lu
mtime:文件内容被修改的时间。查看ls -l
find /home -mtime +1 #查找/home目录下 1天前被修改的文件,即48小时前修改的文件。
find /home –ctime -1 #查找48小时内新建的文件
–perm
find /home –perm 644 #查找/home下权限为644的文件或目录
–maxdepth
find /home –maxdepth 1 #查找目录深度为1层,即查找当前层。
find /home –maxdepth 2 #查找目录深度为2层
多条件配合使用:
find /home –type f –and perm 644 #/home下权限为644的普通文件
find /home ! –type f –and perm 644 #/home下权限不为644的非普通文件
动作:
查找完成后接着执行的动作。
find /home –type f –and perm 600 –exec rm –rf {} \; #删掉查找到的文件,固定语法。注意空格,分号结尾。
2. locate
作用:
locate 其实是find –name 的另一种写法,但是locate的速度更快,原因是locate不搜索具体的目录,而是直接在数据库(/var/lib/locatedb)中查找,这个数据库含有本地所有文件信息。Linux系统自动新建此数据库,且每天(2:00左右)会更新一次数据库,因此locate命令默认查找不到最新变动的文件,为避免这种情况可以在使用locate之前先使用updatedb命令手动更新下数据库。
updatedb具体信息可以man updatedb进行查看:
格式:locate <要找的文件名>
举例:
[root@localhost ~]# locate updatedb
/etc/updatedb.conf
/usr/bin/updatedb
/usr/share/man/man5/updatedb.conf.5.gz
/usr/share/man/man8/updatedb.8.gz
/usr/share/vim/vim74/ftplugin/updatedb.vim
/usr/share/vim/vim74/syntax/updatedb.vim
3. whereis
作用:whereis只能用于程序名的搜索,且值搜索二进制文件(-b)、man说明文件(-m)、源代码文件(-s),省略参数则返回所有匹配文件。
格式:wheteis <文件名>
举例:
[root@localhost ~]# whereis find
find: /usr/bin/find /usr/share/man/man1/find.1.gz /usr/share/man/man1p/find.1p.gz
[root@localhost ~]# whereis locate
locate: /usr/bin/locate /usr/share/man/man1/locate.1.gz
4. which
作用:在变量PATH指定的路径中搜索某个系统命令的位置,且返回第一个搜索结果,即使用which可以查看到系统命令是否存在,以及命令的位置。
格式:which <命令名>
举例:
[root@localhost ~]# which find
/usr/bin/find
[root@localhost ~]# which locate
/usr/bin/locate
5. type
作用:type是用来区分某个命令到底是shell自带的还是外部独立的二级制文件提供的,如果一个命令是外部命令则使用-p参数会显示该命令的路径,相当于which命令。
格式:type <选项> <命令名称>
举例:
[root@localhost ~]# type cd
cd is a shell builtin #cd是shell自带命令
[root@localhost ~]# type locate
locate is hashed (/usr/bin/locate) #locate是外部命令,并显示路径
[root@localhost ~]# type pwd
pwd is a shell builtin #pwd为shell自带命令
[root@localhost ~]# type find
find is hashed (/usr/bin/find) #find为外部命令,并显示find的路径