【Linux入门】文件查找

2023-12-08 14:24:11 浏览数 (1)

常用命令

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 来更新数据库。

代码语言:javascript复制
# 更新 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腾讯技术创作特训营第四期有奖征文,快来和我瓜分大奖!

0 人点赞