一、which(根据PATH环境变量查找脚本路径)
通过which来查找 执行文件,which这个命令是根据【 PATH】这环境变量所规范的路径,去查找执行文件的文件名,所以,重点是找出执行文件而已,且which后面接的是 完整的文件名。若加上 【-a】,可以列出所有的可以找到的同名文件夹。
[root@server /]# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
例子一:查找ifconfig这个命令的完整文件名
[root@server /]# which ifconfig
/usr/sbin/ifconfig
例子二:用which去找出which的文件名是什么
[root@server /]# which which
alias which='alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde'
/usr/bin/alias
/usr/bin/which
二、whereis(在指定目录下查找文件)
whereis主要是针对在一些特定的目录中查找文件, whereis主要是针对/bin/sbin下面的执行文件,以及/usr/share/man下的man page文件
选项和参数 :
例子一:找出ifconfig这个文件名
[root@server /]# whereis ifconfig
ifconfig: /usr/sbin/ifconfig /usr/share/man/man8/ifconfig.8.gz
例子二:找出和passwd相关的文件
[root@server /]# whereis passwd
passwd: /usr/bin/passwd /etc/passwd /usr/share/man/man5/passwd.5.gz /usr/share/man/man1/passwd.1.gz
例子三:只找出和passwd有关的【说明文件】文件名(man page)
[root@server /]# whereis -m passwd
passwd: /usr/share/man/man5/passwd.5.gz /usr/share/man/man1/passwd.1.gz
三、locate/updatedb(根据数据库的记录查询文件)
locate使用简单,只需要在命令后面,直接输入文件的部分名称后,就能够得到结果。locate寻找数据是通过 已经建立的数据库/var/lib/mlocate/里面的数据库所查找到的, 对于centos7.x来说,数据库的建立默认是在每天执行一次,所以当你新建立文件时,需要手动的使用 updatedb命令更新数据库
updatedb: 根据/etc/updatedb.conf的设置去查找系统硬盘内的文件,并更新/var/lib/mlocate内的数据库文件
locate:依据/var/lib/mlocate内的数据库记录,找出用户所输入关键词的文件名
选项和参数
例子一:找出系统中所有与passwd相关的文件名,且只显示5个
[root@server /]# locate -l 5 passwd
/etc/passwd
/etc/passwd-
/etc/pam.d/passwd
/etc/security/opasswd
/root/Python-3.8.3/Lib/test/keycert.passwd.pem
例子二:列出locate查询所使用的数据库文件
[root@server /]# locate -S
Database /var/lib/mlocate/mlocate.db:
11,904 directories
110,551 files
5,881,431 bytes in file names
2,622,233 bytes used to store database
例子三:找出并计算与password相关的文件
[root@server /]# locate -c passwd
131
四、find(从磁盘中查询文件)
find是很强大的命令,但是所用时间很多,因为find直接查找磁盘。命令格式find 【path】 【option】 【action】
-atime、-ctime、-mtime
以-mtime为说明:
例子一:查询/etc下24小时内被修改过的文件
0表示从 现在开始到 过去24小时前
[root@server /]# find /tmp/ -mtime 0
/tmp/
/tmp/bsm-agent
/tmp/testlocate
-1表示一天之内
[root@server /]# find /tmp/ -mtime -1
/tmp/
/tmp/bsm-agent
/tmp/testlocate
例子二:查找5天前被修改过的文件
find /etc/ -mtime 5
查找不属于任何用户的文件(即文件的拥有者不在/etc/passwd中)
例子一:查找用户yyroot的相关文件
截取一部分
[root@server /]# find /home -user yyroot
/home/yyroot
/home/yyroot/.config
[root@server /]# id yyroot
uid=1000(yyroot) gid=1001(yyroot) groups=1001(yyroot),0(root)
[root@server /]# find /home -user 1000
/home/yyroot
/home/yyroot/.config
/home/yyroot/.config/abrt
/home/yyroot/.bashrc
例子二:查找当前系统中不属于任何用户的文件
[root@server /]# find / -nouser
例子一:找出文件名为passwd的文件
/代表根目录下
[root@server /]# find / -name passwd
/etc/passwd
/etc/pam.d/passwd
/usr/share/bash-completion/completions/passwd
/usr/bin/passwd
例子二:找出包含passwd名称的文件
[root@server /]# find / -name "*passwd*"
例子三:找出run目录下,文件类型为socket的文件
[root@server /]# find /run/ -type s
/run/chrony/chronyd.sock
/run/abrt/abrt.socket
/run/dbus/system_bus_socket
/run/lsm/ipc/sim
/run/lsm/ipc/simc
例子:找出run目录下,文件类型为socket的文件,并以ls -l命令打印出来
[root@server /]# find /run/ -type s -exec ls -l {} \;
srwxr-xr-x 1 chrony chrony 0 Jun 7 20:49 /run/chrony/chronyd.sock
srw-rw-rw- 1 root root 0 Jun 7 20:49 /run/abrt/abrt.socket
srw-rw-rw- 1 root root 0 Jun 7 20:49 /run/dbus/system_bus_socket
srw-rw-rw- 1 root root 0 Jun 7 20:49 /run/lsm/ipc/sim
srw-rw-rw- 1 root root 0 Jun 7 20:49 /run/lsm/ipc/simc
srw------- 1 root root 0 Nov 10 19:45 /run/udev/control
srwxrwxrwx 1 root root 0 Nov 10 19:45 /run/systemd/private
srw------- 1 root root 0 Jun 7 20:49 /run/systemd/shutdownd
srw-rw-rw- 1 root root 0 Jun 7 20:49 /run/systemd/journal/socket
srw-rw-rw- 1 root root 0 Jun 7 20:49 /run/systemd/journal/stdout
srwx------ 1 root root 0 Jun 7 20:49 /run/systemd/cgroups-agent
srwxrwxrwx 1 root root 0 Jun 7 20:49 /run/systemd/notify
其中:
{}代表的是由find找到的内容,如上,find的结果会被放置到{}位置中
-exec 一直到 \; 就是关键词,代表find额外的操作的开始(-exec)到结束(\;)。在上面ls -l {}就是额外的操作Original: https://blog.csdn.net/adminwg/article/details/127824022
Author: simpleyako
Title: 命令与文件的查找
原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/660741/
转载文章受原作者版权保护。转载请注明原作者出处!