一、locate #查找文件或者目录的路径 用到了本地的数据库 文件名称的数据库 根据本地的数据库进行查找文件,不会查找到最新的文件
[root@jindada ~]# yum install -y mlocate
选项:
-i #不区分大小写
-r #简单使用正则表达式 $ 结尾
/var/lib/mlocate/mlocate.db
[root@jindada ~]# updatedb #更新数据库
#把系统中所有文件名称包含passwd的文件全部查找出来
[root@jindada ~]# locate passwd
/etc/passwd
/etc/passwd-
/etc/pam.d/passwd
/etc/security/opasswd
/root/passwd
/usr/bin/gpasswd
/usr/bin/grub2-mkpasswd-pbkdf2
/usr/bin/passwd
/usr/lib/firewalld/services/kpasswd.xml
[root@jindada ~]# locate hostnamectl
/usr/bin/hostnamectl
/usr/share/bash-completion/completions/hostnamectl
/usr/share/man/man1/hostnamectl.1.gz
/usr/share/zsh/site-functions/_hostnamectl
[root@jindada ~]# touch hostnamectl
[root@jindada ~]# updatedb
[root@jindada ~]# locate hostnamectl
/root/hostnamectl
/usr/bin/hostnamectl
/usr/share/bash-completion/completions/hostnamectl
/usr/share/man/man1/hostnamectl.1.gz
/usr/share/zsh/site-functions/_hostnamectl
[root@jindada ~]# updatedb
[root@jindada ~]# locate hostnamectl
/root/hostnamectl
/usr/bin/hostnamectl
/usr/share/bash-completion/completions/hostnamectl
/usr/share/man/man1/hostnamectl.1.gz
/usr/share/zsh/site-functions/_hostnamectl
[root@jindada ~]# locate -i hostnamectl
/opt/HOSTNAMEctl
/root/hostnamectl
/usr/bin/hostnamectl
/usr/share/bash-completion/completions/hostnamectl
/usr/share/man/man1/hostnamectl.1.gz
/usr/share/zsh/site-functions/_hostnamectl
[root@jindada ~]# locate -r hostname$
/etc/hostname
/etc/selinux/targeted/active/modules/100/hostname
/usr/bin/hostname
/usr/bin/nmtui-hostname
/usr/lib64/gettext/hostname
二、which #查找命令的绝对路径
[root@jindada ~]# which ping
/usr/bin/ping
#查找命令的绝对路径时,是通过PATH环境变量中的路径进行查找
[root@jindada ~]# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
#不使用which的别名进行查找命令的绝对路径
[root@jindada ~]# which cp
/usr/bin/cp
[root@jindada ~]# rpm -qf `which ping`
iputils-20160308-10.el7.x86_64
[root@jindada ~]# rpm -qf /usr/bin/ping
iputils-20160308-10.el7.x86_64
三、whereis #查找系统二进制程序、man帮助文件、源代码文件 查找不到自己创建的文件
选项:
-b #只查找二进制程序文件
-m #查找man帮助文件
-s #查找源代码文件
[root@jindada ~]# whereis ping
ping: /usr/bin/ping /usr/share/man/man8/ping.8.gz
[root@jindada ~]# whereis -b ping
ping: /usr/bin/ping
[root@jindada ~]# whereis -m ping
ping: /usr/share/man/man8/ping.8.gz
四、 type命令 #显示指定命令的类型 判断你的命令是内部命令还是外部命令
选项:
-a #显示内置命令的绝对路径
-p #只显示命令的绝对路径
help命令可以显示系统中所有的内置命令
[root@sh-jindada ~]# type cd #cd是一个内置命令
cd is a shell builtin
[root@sh-jindada ~]# type -a cd #查看内部命令的路径
cd is a shell builtin
cd is /usr/bin/cd
[root@sh-jindada ~]# type ip #外部命令是不需要加-a的
ip is /usr/sbin/ip
#查看系统中的内置命令
[root@sh-jindada ~]# help
#只显示命令的绝对路径
[root@sh-jindada ~]# type -p ip
/usr/sbin/ip
[root@sh-jindada ~]# type -p cd
[root@sh-jindada ~]# type -pa cd #内置命令需要加-a
/usr/bin/cd
五、find #文件查找命令 指定路径查找 根据名称 大小 权限 时间等查找
选项:
-type #根据文件类型进行查找
f #普通文件
d #目录
l #软连接文件
s #socket文件 套接字文件
p #管道文件
-name #根据名称进行查找
-iname #查找的时候忽略大小写
* #特殊符号 通配符 不是正则 所有的意思
命令 目录 类型 普通文件 根据名称 叫什么名字
[root@sh-jindada ~]# find /etc -type f -name "hostname" #精确查找
/etc/hostname
[root@sh-jindada ~]# find /etc -type f -name "hostname*"
/etc/hostname
[root@sh-jindada ~]# find /etc -type f -name "*hostname*"
/etc/dbus-1/system.d/org.freedesktop.hostname1.conf
/etc/hostname
#全局查找 * 所有的意思
[root@sh-jindada ~]# find / -type f -name "*hostname*"
/proc/sys/kernel/hostname
/etc/dbus-1/system.d/org.freedesktop.hostname1.conf
/etc/hostname
/root/hostname{html.php}
/root/hostname.html
/root/hostname.php
/root/hostname
/usr/bin/hostname
/usr/bin/hostnamectl
#查找以hostname为结尾的文件
[root@sh-jindada ~]# find / -type f -name "*hostname"
/proc/sys/kernel/hostname
/etc/hostname
/root/hostname
/usr/bin/hostname
/usr/lib64/gettext/hostname
#以hostname为开头的文件
[root@sh-jindada ~]# find / -type f -name "hostname*"
/proc/sys/kernel/hostname
/etc/hostname
/root/hostname{html.php}
/root/hostname.html
/root/hostname.php
/root/hostname
/usr/bin/hostname
/usr/bin/hostnamectl
/usr/lib64/gettext/hostname
/usr/share/man/man1/hostname.1.gz
/usr/share/man/man1/hostnamectl.1.gz
#精确查找,名称只能为hostname
[root@sh-jindada ~]# find / -type f -name "hostname"
/proc/sys/kernel/hostname
/etc/hostname
/root/hostname
/usr/bin/hostname
/usr/lib64/gettext/hostname
#查找名称为hostname的目录
[root@sh-jindada ~]# find / -type d -name "hostname"
/etc/selinux/targeted/active/modules/100/hostname
[root@sh-jindada ~]# ll -d /etc/selinux/targeted/active/modules/100/hostname
drwx------. 2 root root 44 Jun 9 19:57 /etc/selinux/targeted/active/modules/100/hostname
[root@sh-jindada ~]#
#查找名称的时候忽略大小写
[root@sh-jindada ~]# find / -type d -iname "hostname"
/etc/selinux/targeted/active/modules/100/hostname
/usr/lib64/perl5/auto/Sys/Hostname
#根据目录的层级查找
[root@sh-jindada ~]# find / -maxdepth 2 -type d -name "hostname"
/root/hostname
[root@sh-jindada ~]#