前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【Linux入门】文件查找

【Linux入门】文件查找

原创
作者头像
参谋带个长
修改2023-12-08 14:24:11
2542
修改2023-12-08 14:24:11
举报

常用命令

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腾讯技术创作特训营第四期有奖征文,快来和我瓜分大奖!

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 常用命令
  • 命令查找 which
  • 在系统特定目录下查找文件 whereis
  • 利用数据库查找文件 locate
  • 文件查找命令 find
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档