常用命令-查找命令

1. which which [-a] command
查找系统命令位置,只在$path环境变量中查找,并且默认只返回第一个查找结果
参数:

  • -a 列出所有的查找结果
    例: which -a php
2. type type [option] command
用于区别某个命令到底是由shell自带的,还是shell外部的独立二进制文件提供的
参数:
  • -t 输出命令的type,比如:alias,file,builtin
  • -p 如果是外部命令,则输出绝对地址
    如:type -t cd
3. whereis whereis [-bmsu] file
whereis命令用于定位可执行文件、源代码文件、帮助文件在系统中的位置
参数:
  • -b查找二进制文件
  • -m查找说明文件
  • -s查找源代码文件
  • -u查找非上述三种文件的其他文件
    例:whereis -b php
    **PS:whereis默认从数据库文件(linux将所有的文件都记录在一个数据库文件,但并不实时更新,一般一天更新一次)中查找指定文件,因此whereis比其他从硬盘查找的命令,效率高很多
4. find find [path] [option] [action]
find命令可查找指定路径下所有符合条件的文件或目录,find命令参数可以拟分成两大类,一种是普通参数,一种是时间参数
普通参数:
  • type 根据文件类型进行搜索
    find /usr/bin/ -type d 查找/usr/bin/目录下的所有目录
  • name 根据文件名进行搜索(-iname不区分大小写)
    find /usr/bin -name '*.jpg' 查找/usr/bin/目录下以JPG为后缀的文件和目录
  • size 根据文件的大小进行搜索(+n大于 -n小于)
  • prem 根据文件读写权限进行搜索
  • -group 根据文件拥有组进行搜索
  • -empty 匹配空文件或空目录
时间相关参数:
  • -time 天
  • min 分钟
  • +n n天(分钟)之前
  • -n n天(分钟)之内
  • -atime +n 搜索n天前被访问过的文件或目录
  • -mtime -n 搜索n天前被修改过文件内容的文件或目录
  • -cmin -n 搜索n分钟之内被被修改过文件内容、权限、属性的文件或目录
  • 。。。
5. locate 【常用命令-查找命令】此命令和find / -name类似,但是它是从数据库文件中查找指定文件,因此效率比find快得多
  • -i 忽略大小写
  • -r 使用正则表达式做匹配条件。
总结
  1. 五个查找命令中,find、locate、whereis是用来查找具体的文件,which、type是用来查找命令(which也相当于查找文件,但是只是查找命令位置)
  2. whereis只查找3中类型的文件:二进制文件、说明文件、源代码文件
  3. whereis和locate都是从数据库文件查找,所以效率最高
  4. 使用优先级:
    • 区分命令,使用type
    • 查找命令位置,使用which、whereis、type(优先使用whereis)
    • 通过文件名查找,优先使用locate,找不到时,updatedb
    • 其他查找条件、或者因数据库文件未更新,使用whereis、lacate找不到时用find

    推荐阅读