常用命令
which:命令查找
whereis:在系统特定目录下查找文件
locate:利用数据库查找文件
find:文件查找
命令查找 which
which 命令用于查找指定命令(脚本文件)的可执行文件路径,在系统的【PATH】变量指定的路径中搜索某个系统命令的位置,并返回搜索结果(默认只返回第1个匹配结果)。
命令格式:
代码语言:javascript复制which [参数] 命令名称
# 参数
-a:列出所有匹配项,而不仅是第1个匹配项
命令示例:
代码语言:javascript复制# 查找 ls 命令的位置,默认只返回第1个匹配结果
which ls
# 可能返回以下内容
/usr/bin/ls
代码语言:javascript复制# 查找 ls 命令的位置,返回所有匹配结果
which -a ls
# 可能返回以下内容
/usr/bin/ls
/bin/ls
需要注意的是:which 命令是根据【PATH】环境变量所规范的路径,去查找执行文件的文件名,有些命令不在环境变量所指定的路径中,则无法查找到
在系统特定目录下查找文件 whereis
whereis 命令只是在特定目录下查找文件并返回路径,并没有查找硬盘上的所有文件,所以查找速度非常快。
命令格式:
代码语言:javascript复制whereis [参数] 文件名或目录名
# 参数
-l:列出 whereis 会查找的几个主要目录
-b:只查找 binary 二进制格式的文件
-m:只查找说明文件 manual 路径下的文件
-s:只查找 source 源文件
-u:查找不在上述 3 个项目当中的其它特殊文件
命令示例:
代码语言:javascript复制whereis ls
# 可能返回以下内容
ls: /usr/bin/ls /usr/share/man/man1/ls.1.gz
利用数据库查找文件 locate
locate 命令查找的数据是由已建立的数据库 /var/lib/mlocate/ 里面的数据所进行的,并没有查找硬盘上的所有文件,所以查找速度非常快。
命令格式:
代码语言:javascript复制locate [参数] 文件名或目录名
# 参数
-l:限制搜索结果的数量,空格后接数字,如:-l 5 表示只列5个结果
-i:忽略大小写进行搜索
-c:只返回匹配结果的数量,而不显示具体路径
命令示例:
代码语言:javascript复制# 列出于 passwd 相关的文件名,只列5个结果
locate -l 5 passwd
# 可能返回以下内容
/etc/passwd
/etc/passwd-
/etc/pam.d/chpasswd
/etc/pam.d/passwd
/etc/security/opasswd
locate 是通过数据库来查找,而数据库的建立默认是由系统每天执行一次,所以新建立的文件可能无法被及时搜索到,此时可以通过命令 updatedb
来更新数据库。
# 更新 locate 的数据库
updatedb
文件查找命令 find
find 命令用于搜索文件,可以根据文件名、大小、修改时间、权限等属性来查找文件,采用递归方式搜索指定的目录及其子目录,并根据各种条件进行过滤和匹配。因为是硬盘搜索文件,所以速度上不及 whereis 和 locate 命令,但查找的范围更广。
命令格式:
代码语言:javascript复制find [路径] [选项] [表达式]
# 选项
-name:按文件名进行匹配
-type:按文件类型进行匹配,如普通文件、目录、符号链接等
-size:按文件大小进行匹配
-mtime:按文件修改时间进行匹配
-exec:对搜索结果执行指定的命令(谨慎操作)
-print:将搜索结果输出到屏幕上(默认操作)
代码语言:javascript复制# 查找指定目录下名为 abc.txt 的文件
find /home/test/ -name abc.txt
# 查找指定目录下所有以".txt"结尾的文件
find /home/test/ -name "*.txt"
# 查找指定目录下的所有普通文件
find /home/test/ -type f
# 查找指定目录下的所有目录
find /home/test/ -type d
# 查找指定目录下最近7天内修改过的文件
find /home/test/ -mtime -7
# 查找指定目录下大于1MB的文件并删除(谨慎操作)
find /home/test/ -size 1M -exec rm {} ;
# 查找指定目录下名称中包含 test 的文件
find /home/test/ -name '*test*'
我正在参与2023腾讯技术创作特训营第四期有奖征文,快来和我瓜分大奖!