Linux 命令与文件的查询

时间:2022-07-17 16:29:20

查询脚本文件名

which(寻找“执行文件”)

[root@www ~]# which [-a] command
# -a:将所有由 PATH 目录中可以找到的命令均列出

该命令是根据 PTAH 这个环境变量所规范的路径去查询“执行文件”的文件名

查询文件名

whereis(寻找特定文件)

[root@www ~]# whereis [-bmsu] 文件或目录名
# -b:只找二进制格式的文件
# -m:只找在说明文件 manual 路径下的文件
# -s:只找 source 源文件
# -u:查找不在上述三个选项当中的其他特殊文件

如果不加任何参数,就将所有的数据列出来

locate

[root@www ~]# locate [-ir] keyword
# -i:忽略大小写的差异
# -r:后面可接正则表达式的显示方式

locate 可以根据文件的部分名称来查找结果

locate:依据 /var/lib/mlocate 内的数据库记载,找出用户输入的关键字文件名

由于数据库基本上是默认每天更新一次,所以有时查找时需要手动更新:

updatedb:读取 /etc/updatedb.conf 配置文件的设置去查找系统硬盘内的文件名,并更新 /var/lib/mlocate 内的数据库文件

find

[root@www ~]# [PATH] [option] [action]

# 1. 时间参数共有 -atime,-ctime,-mtime
# mtime n:n 天之前的一天之内更改过的文件
# mtime +n:n 天之前(不含第 n 天)更改过的文件
# mtime -n:n 天之前(包含第 n 天)更改过的文件
# newer file:file 为一个已经存在的文件夹,列出比 file 还要新的文件名
# ps:若 n 为 0,表示目前的时间

# 2. 与用户或用户组名有关的参数
# -uid n:n 为用户的账号 ID
# -gid n:n 为用户组名的 ID
# -user name:name 为用户账号名称
# -group name:name 为用户组名
# -nouser:寻找文件的所有者不存在 /etc/passwd(用户的账号 ID) 的人
# -nogroup:寻找文件的用户组不存在于 /etc/group(用户组名的 ID) 中的文件

# 3. 与文件权限及名称有关的参数
# -name filename:查找文件名为 filename 的文件
# -size [+-]SIZE:查找比 SIZE 还要大(+)或小(-)的文件。c:byte;k:1024 bytes
# -type TYPE:查找文件的类型为 TYPE 的。f:一般正规文件;b,c:设备文件;d:目录;l:连接文件;s:socket;p:FIFO
# -perm mode:查找文件权限刚好等于 mode 的文件
# -perm -mode:查找文件权限必须要全部包括 mode 的权限的文件
# -perm +mode:查找文件权限包含任一 mode 的权限的文件
# 4. 其他可进行的操作
# -exec command:-exec 后面可再接其他的命令来处理查找到的结果
# -print:将结果打印到屏幕上,也是默认选项                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    


# find 相关的额外命令:
find / -perm +7000 -exec ls -l {} \;
# find 的结果会被放置到 {} 中
# find 额外命令的开始(-exec)到结束(\;),中间的部分即是 find 命令内的额外命令 "ls -l {}"
# ";" 在 bash 环境下有特殊意义,所以利用反斜杠来转义
# find 可以利用通配符来找寻文件名

find 命令后面可以接多个目录来进行查找,find 本来就会查找子目录

find 不但可以指定查找的目录(连同子目录),还可以利用额外的参数来找到最正确的文件名