命令与文件的查找

一、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/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球