Linux which、whereis、locate、find命令

一、which、whereis、locate、find的区别

命令 说明
which 常用于查找可直接执行的命令。只能查找可执行文件,该命令基本只在$PATH路径中搜索,查找范围最小,查找速度快。默认只返回第一个匹配的文件路径,通过选项 -a 可以返回所有匹配结果
whereis 不只可以查找命令,其他文件类型都可以(man中说只能查命令、源文件和man文件,实际测试可以查大多数文件)。在$PATH路径基础上增加了一些系统目录的查找,查找范围比which稍大,查找速度快。可以通过 -b 选项,限定只搜索二进制文件。
locate

超快速查找任意文件。它会从linux内置的索引数据库查找文件的路径,索引速度超快。刚刚新建的文件可能需要一定时间才能加入该索引数据库,可以通过执行updatedb命令来强制更新一次索引,这样确保不会遗漏文件。该命令通常会返回大量匹配项,可以使用 -r 选项通过正则表达式来精确匹配。

find 直接搜索整个文件目录,默认直接从根目录开始搜索,建议在以上命令都无法解决问题时才用它,功能最强大但速度超慢。除非你指定一个很小的搜索范围。通过 -name 选项指定要查找的文件名,支持通配符。

二、which命令

1、语法

which命令用于查找可执行文件,which指令会在环境变量$PATH设置的目录里查找符合条件的文件。

which [文件...]

2、参数

-n<文件名长度> 指定文件名长度,指定的长度必须大于或等于所有文件中最长的文件名。

-p<文件名长度> 与-n参数相同,但此处的<文件名长度>包括了文件的路径。

-w 指定输出时栏位的宽度。

-V 显示版本信息

3、示例

which ls
alias ls='ls --color=auto'
	/usr/bin/ls

 

三、whereis命令

1、语法:

该指令会在特定目录中查找符合条件的文件。这些文件应属于原始代码、二进制文件,或是帮助文件。

该指令只能用于查找二进制文件、源代码文件和man手册页,一般文件的定位需使用locate命令

whereis [-bfmsu][-B <目录>...][-M <目录>...][-S <目录>...][文件...]

2、参数:

-b  只查找二进制文件。

-B<目录>  只在设置的目录下查找二进制文件。

-f  不显示文件名前的路径名称。

-m  只查找说明文件。

-M<目录>  只在设置的目录下查找说明文件。

-s  只查找原始代码文件。

-S<目录>  只在设置的目录下查找原始代码文件。

-u  查找不包含指定类型的文件。

 

四、locate命令

1、语法

locate命令用于查找符合条件的文档,他会去保存文档和目录名称的数据库内,查找合乎范本样式条件的文档或目录。

一般情况我们只需要输入 locate file_name 即可查找指定文件

locate [-d ][--help][--version][范本样式...]

2、安装

安装mlocate包

yum -y install mlocate

更新数据库

updatedb

3、参数

-d或--database= 配置locate指令使用的数据库。locate指令预设的数据库位于/var/lib/slocate目录里,文档名为slocate.db,您可使用 这个参数另行指定。

--help  在线帮助。

--version  显示版本信息。

4、示例

locate passwd

locate supervisor.conf
/etc/tmpfiles.d/supervisor.conf

 

五、find命令

1、语法

find   path   -option   [   -print ]   [ -exec   -ok   command ]   {} \

说明:

path: find命令所查找的目录路径。例如用.来表示当前目录,用/来表示系统根目录。
-print: find命令将匹配的文件输出到标准输出,默认执行该命令。
-exec: find命令对匹配的文件执行该参数所给出的shell命令。相应命令的形式为'command' { } \;,注意{ }和\;之间的空格。
-ok: 和-exec的作用相同,只不过以一种更为安全的模式来执行该参数所给出的shell命令,在执行每一个命令之前,都会给出提示,让用户来确定是否执行。

2、参数

-name filename #查找名为filename的文件

find   -name april* #在当前目录下查找以april开始的文件
find   -name april* fprint file #在当前目录下查找以april开始的文件,并把结果输出到file中
find   -name ap* -o -name may*  #查找以ap或may开头的文件
find   /mnt -name tom.txt -ftype vfat #在/mnt下查找名称为tom.txt且文件系统类型为vfat的文件
find   /mnt -name t.txt ! -ftype vfat #在/mnt下查找名称为tom.txt且文件系统类型不为vfat的文件
find   /tmp -name wa* -type l         #在/tmp下查找名为wa开头且类型为符号链接的文件
find   /home -name tmp.txt -maxdepth 4   #列出/home内的tmp.txt 查时深度最多为3层
find   /home -name tmp.txt -mindepth 3   #从第2层开始查

-user    username             #按文件属主来查找

find /home -user csdn #列出/home目录内属于用户csdn的文件或目录

-group groupname            #按组来查找

-mtime   -n +n                #按文件更改时间来查找文件,-n指n天以内,+n指n天以前

find /home -mtime -2  #在/home下查最近两天内改动过的文件

-ctime    -n +n              #按文件创建时间来查找文件,-n指n天以内,+n指n天以前

参考链接:https://www.cnblogs.com/wanqieddy/archive/2011/06/09/2076785.html

Linux命令大全:https://www.runoob.com/linux/linux-command-manual.html

 

你可能感兴趣的:(Linux,linux)