find
find
命令准确,但速度非常慢,它可以查找任何类型的文件
使用格式如下
find [指定目录] [指定条件] [指定动作]
参数说明
- [指定目录]: 所要搜索的目录及其所有子目录。默认为当前目录
- [指定条件]: 所要搜索的文件的特征
- [指定动作]: 对搜索结果进行特定的处理
常用的[指定条件]
- -name:按文件名来查找文件
- -user:按照文件的属主来查找文件
- -group:按照文件所属的组来查找文件
- -perm:按照文件权限来查找文件
- -prune:不在当前指定目录中查找
常用的[指定动作]
- -print:将匹配的文件输出到标准输出
- -exec:对匹配的文件执行该参数所给出的shell命令
- -ok:和-exec的作用相同,在执行每一个命令之前,让用户来确定是否执行
find
命令不加任何参数时,表示搜索路径为当前目录及其子目录,默认的动作为-print
,即不过滤任何结果,也就是说输出所有的文件
使用实例
递归搜索当前目录中,所有以file
开头的文件
find . -name 'file*'
递归搜索当前目录中,所有以file
开头的文件,并显示它们的详细信息
find . -name 'file*' -ls
locate
locate
命令可以说是find -name
的另一种写法,但是要比后者快得多,原因在于它不搜索具体目录,而是搜索一个数据库/var/lib/locatedb
,这个数据库中含有本地所有文件信息
Linux自动创建这个数据库,并且每天自动更新一次,所以使用locate
命令查不到最新变动过的文件。为了避免这种情况,可以在使用locate
之前,先使用updatedb
命令,手动更新数据库
使用格式如下
locate [参数] <文件名>
使用实例
搜索etc
目录下所有以file
开头的文件
locate /etc/file
搜索用户主目录下,所有以f
开头的文件,并且忽略大小写
locate -i ~/f
whereis
whereis
命令只能搜索特定格式的文件
使用格式如下
whereis [参数] <文件名>
可搜索的文件类型
- 二进制文件(-b)
- 源代码文件(-s)
- 说明文件(-m)
如果省略参数,则返回所有信息
使用实例
找出名为find
的文件位置
whereis find
which
which
命令的作用是,在PATH
变量指定的路径中,搜索某个系统命令的位置,并且返回第一个搜索结果
也就是说,使用which
命令,就可以看到某个系统命令是否存在,以及执行的到底是哪一个位置的命令
使用格式如下
which <命令>
使用实例
查找find
命令的位置
which find
type
type
命令其实不能算查找命令,它是用来区分某个命令到底是由shell
自带的,还是由shell
外部的独立二进制文件提供的
如果一个命令是外部命令,那么使用-p
参数,会显示该命令的路径,相当于which
命令
使用格式如下
type <命令>
使用实例
type cd
系统会提示,cd
是shell
的自带命令build-in
type grep
系统会提示,grep
是一个外部命令,并显示该命令的路径
type -p grep
加上-p
参数后,就相当于which命令
感觉比较好用的是
locate
命令,速度非常快,还能达到find
命令一样的准确,只需要先用updatedb
命令更新数据库