命令 | 功能 |
---|---|
which | 查看可执行文件的位置(PATH中查找) |
whereis | 查找程序的二进制文件,源文件和man page文件(索引数据库) |
locate | 找到在其路径中任何位置包含查找字符串的所有文件(索引数据库) |
find | 搜索硬盘查询文件名称,功能强大但速度超慢 |
which
which是通过 PATH环境变量到该路径内查找可执行文件,所以基本的功能是寻找可执行文件 。
语法:
which 可执行文件名称
例如:
[root@localhost ~]# which passwd
/usr/bin/passwd
whereis
与which不同的是whereis是通过文件索引数据库而非PATH来查找的,所以查找速度更快。查找范围比which稍大。它可以定位/返回与指定名字匹配的二进制文件、源代码文件和帮助手册文件所在的路径。
但是该数据库文件并不是实时更新,默认情况下时一星期更新一次,因此,在使用whereis查找文件前先使用updatedb命令手动更新数据库。
语法:
whereis [-bmsu] 文件或者目录名称
参数说明:
-b :只找二进制文件
-m :只找在说明文件manual路径下的文件
-s :只找source源文件
-u :没有说明文档的文件
例如:
将和passwd文件相关的文件都查找出来 :
[root@localhost ~]# whereis passwd
passwd: /usr/bin/passwd /etc/passwd /usr/share/man/man1/passwd.1.gz /usr/share/man/man5/passwd.5.gz
只查找二进制文件:
[root@localhost ~]# whereis -b passwd
passwd: /usr/bin/passwd /etc/passwd
locate
locate
命令也是通过数据库查找文件,但是这个命令的适用范围比whereis
大。这个命令可以找到其路径中任何位置包含搜索内容的文件,所以通常会返回大量匹配项。
但是该数据库文件并不是实时更新,一天更新一次,因此,在使用locate 查找文件前先使用updatedb命令手动更新数据库。
语法:
locate 文件或者目录名称
常用参数:
-r 通过正则表达式来精确匹配。
-e 仅打印当前存在文件的结果,不会打印已删除的内容
-b 仅匹配路径名的基本名称
例如:
[root@localhost ~]# locate passwd
/etc/passwd
/etc/passwd-
/etc/pam.d/passwd
/etc/security/opasswd
/lib64/security/pam_passwdqc.so
/lib64/security/pam_unix_passwd.so
/usr/bin/gpasswd
/usr/bin/kpasswd
/usr/bin/lppasswd
/usr/bin/passwd
/usr/bin/smbpassw
..............
[root@localhost ~]# locate -r passwd$
/etc/passwd
/etc/pam.d/passwd
/etc/security/opasswd
/usr/bin/gpasswd
/usr/bin/kpasswd
/usr/bin/lppasswd
/usr/bin/passwd
/usr/bin/smbpasswd
/usr/bin/yppasswd
/usr/sbin/chpasswd
/usr/sbin/lpasswd
find
直接搜索硬盘的方式查找的,默认直接从根目录开始搜索,建议在以上命令都无法解决问题时才用它,功能最强大但速度超慢。
语法:
find 路径 参数
参数说明:
时间查找参数:
-atime n :将n*24小时内存取过的的文件列出来
-ctime n :将n*24小时内改变、新增的文件或者目录列出来
-mtime n :将n*24小时内修改过的文件或者目录列出来
-newer file :把比file还要新的文件列出来
名称查找参数:
-gid n :寻找群组ID为n的文件
-group name :寻找群组名称为name的文件
-uid n :寻找拥有者ID为n的文件
-user name :寻找用户者名称为name的文件
-name file :寻找文件名为file的文件(可以使用通配符)
例 如:
[root@localhost ~]# find / -name test.sh
/root/test.sh
[root@localhost ~]# find / -name 'in'
[root@localhost ~]# find / -name 'install'
/usr/share/dracut/modules.d/95terminfo/install
/usr/share/dracut/modules.d/99kdumpbase/install
/usr/share/dracut/modules.d/90kernel-modules/install
/usr/share/dracut/modules.d/90dmraid/install
/usr/share/dracut/modules.d/90multipath/install
/usr/share/dracut/modules.d/95udev-rules/install
/usr/share/dracut/modules.d/95debug/install
/usr/share/dracut/modules.d/95znet/install
总结
建议优先使用whereis和locate。当我们用whereis
和locate
无法查找到需要的文件时,再使用find。