news 2026/9/1 4:23:06

14-文件查找工具

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
14-文件查找工具

一、locate文件查找工具

(一)locate特点:

1. 根据关键字搜索(模糊查找),只要文件名称包含这个关键字就可以搜索到

2. 根据数据库索引文件搜索,如果数据库的索引文件不存在则无法使用(需要执行updatedb命令来更新数据库索引文件)

[root@rhel9 cron]# locate passwd

locate: can not stat () `/var/lib/mlocate/mlocate.db': No such file or directory

3. locate不是实时查询,有可能有的文件明明存在但是无法查询到(要么就等待自己更新数据库索引,要么手动执行updatedb命令更新)

[root@rhel9 opt]# touch passwd-yutianedu

[root@rhel9 opt]# locate passwd-yutianedu

[root@rhel9 opt]#

4. 所有查找工具共同的特点,查找的目录必须要有r和x权限

优点:根据索引进行搜索,查询效率快

缺点:无法实时去搜索文件,只能根据索引搜索

常用选项:

-i 忽略关键字的大小写

-nx 列出指定n行

比如:文件非常的多,你只知道文件名包含的关键字,建议使用locate查询,因为查询速度快

二、find-文件查找工具

(一)find特点:

1.实时查询文件,精确查询 也可以进行模糊查询(支持各种通配符)

2. find工具可以在查找到文件的基础之上执行二次命令操作(比如搜索系统上所有以.swp结尾的文件,然后去删除掉)

3. find支持各种条件查询(根据文件名称查询文件、根据文件的inode编号查询文件、根据文件的权限查询文件、根据文件的拥有人/拥有组身份查询文件、根据文件的时间戳查询文件、根据目录的层级来查询文件...)

4. 所有查找工具共同的特点,查找的目录必须要有r和x权限

5.find查询的时候是遍历查询

(二)语法格式:find查询的目录查询的条件命令操作

find /home -name "zhangsan" -print :表示在/home目录下查询文件名是zhangsan的文件并且将其打印输出到屏幕上

默认情况下 -print就是默认的操作,表示打印输出

所以可以写成 find /home -name "zhangsan"

如果查询的目录不写,表示在当前目录下查找

find -name "zhangsan"

1.查询条件

(1)基于文件名和inode编号查询

基于文件名进行搜索(支持通配符号,注意如果采用了通配符 记得用引号包裹)

-name

-iname

基于文件inode编号搜索(用的少,一般是用来搜索硬链接文件的,因为硬链接文件的inode编号是一样的)

-inum

(2)基于文件的拥有人/拥有组身份查询

基于文件的拥有人身份查询

-uid

-user

基于文件的拥有组身份查询

-gid

-group

查询没有拥有人/没有拥有组的文件:不属于任何用户的文件:文件还存在,但是文件的拥有人或者拥有组已经被管理员删除了

-nouser

-nogroup

(3)基于文件大小查询

基于文件大小进行查询

-size

[root@rhel9 size]# ll -h

total 24M

-rw-r--r--. 1 root root 1.0M Mar 8 14:08 1M.txt

-rw-r--r--. 1 root root 3.0M Mar 8 14:08 3M.txt

-rw-r--r--. 1 root root 4.5M Mar 8 14:10 4.5M.txt

-rw-r--r--. 1 root root 4.0M Mar 8 14:09 4M.txt

-rw-r--r--. 1 root root 5.0M Mar 8 14:09 5M.txt

-rw-r--r--. 1 root root 6.0M Mar 8 14:09 6M.txt

-rw-r--r--. 1 root root 0 Mar 8 14:08 empty.txt

[root@rhel9 size]#find . -size +5M# 查询大于5M大小的文件,不包含5M 。是大于的意思

./6M.txt

[root@rhel9 size]#find . -size -5M# 查询小于5M大小的文件,不包含5M 是小于的意思

.

./empty.txt

./1M.txt

./3M.txt

./4M.txt

[root@rhel9 size]#find . -size 5M# 查询小于等于5M,大于4M的文件。包含的意思。 x-1 < x <=x

./5M.txt

./4.5M.txt

[root@rhel9 size]#find . -size -1M## 这里的意思是表示搜索空文件,如果要搜索小于1M的文件使用 -size 1M

./empty.txt

(4)基于文件类型查询

基于文件类型查询文件

-type x

x如下:

f 普通文件

b 块设备

c 字符文件

d 目录

l 链接文件

p 管道文件

s 套接字文件

(5)基于文件权限查询

基于文件权限查询

-perm [ / or - ] MODE

MODE: 精确匹配权限

/MODE: 任何一类(u,g,o)对象的权限中只要能一位匹配即可,属于或关系。以前用'+',rhel 7以后'/'替代

-MODE: 每一类对象都必须同时拥有指定权限,属于与关系

0:表示不关注(只针对/或者-的场景,只有在这类场景下0才表示不关注)

MODE表示文件权限:文件权限有数字和字母的表现方式,这里通常使用数字表示

# 1. 查找任何人有执行权限的文件(宽松)
find . -perm /111

# 2. 查找拥有人必须有读+写,拥有组必须有读(严格)
find . -perm -640

# 3. 查找权限恰好是 644 的文件(精确)
find . -perm 644

(6)基于文件时间戳查询

基于文件时间戳查询

access time

modify time

change time

选项:

- atime [+-] 时间:根据文件访问时间搜索

- mtime [+-] 时间:根据文件修改时间搜索

- ctime [+-] 时间:根据文件改动时间搜索(属性)

+7 表示7天以及7天之前的时间 相当于>=7

-7 表示7天之内的时间 相当于<

7 表示7-8天的时间(包含第7天) 相当于7<=x<8

-atime +7

-mtime +7

-ctime +7

time单位是天数

-amin +7

-mmin +7

-cmin +7

min单位是分钟

物理服务器运行了很久很久,服务器上的程序运行的时候是会产生一些临时和缓存数据文件的!

这些临时文件会占据存储空间,这些文件其实是可以释放掉的!

(7)基于逻辑组合类型查询:针对于多个条件来查询文件的话

-a:与 默认情况下,就是逻辑与

-o:或

-not,!:非

[root@rhel9 size]# find /usr/ -size +30k -size -50k -type f

优先级:() > ! > -a > -o(与数学运算类似)

# 错误示例:本意是查找 .txt 或 .log,且大小>1M
find . -name "*.txt" -o -name "*.log" -size +1M
# 实际解析:(.txt) OR (.log AND >1M) ← 不是想要的!

# 正确写法:用括号明确分组
find .\(-name "*.txt" -o -name "*.log"\)-size +1M

(8)基于目录层级查询

基于目录层级查询

-maxdepth n 最大深度 n 层(从起始目录算 0)

-maxdepth 2 最多往下走 2 层

-mindepth n 最小深度 n 层

-mindepth 2 至少走 2 层才开始匹配

比如说有一个目录,这个目录非常的庞大,如果直接通过rm的方式删除整个目录,其实效率比较低,会卡顿

我们推荐可以先进入到最里面的目录, 然后删除最里面目录的文件;退回到上一层级目录,然后再删除

find xxx -mindepth 9

2.在查找的文件基础上进行二次命令操作(动作)

操作:打印输出、查看详细信息(权限、大小)、删除、自定义命令操作

-print:打印输出查到的文件

-ls:列出查找到的文件的详细信息

-delete:删除查找到的文件。对于delete来说,如果删除的是目录,目录不为空,delete无法删除掉

-ok / -exec :在查找到的文件基础之上做二次命令,后面的命令是自己写的Linux命令

-ok 交互式

-exec 非交互式

格式:

[root@rhel9 opt]# find . -type f-execrm -rf{} \;

{} 表示前面查到的文件

\; 固定语法

案例:搜索/opt目录下,将没有其他人x权限的普通文件都加上x权限

[root@rhel9 opt]#find/opt/-type f! -perm-001-execchmodo+x{}\;

[root@rhel9 opt]# ll

total 8

-rw-r--r-x. 1 root root 1254 Mar 8 15:09 group

-rw-r--r-x. 1 root root 3326 Mar 8 15:09 passwd

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/14 17:23:38

DAMOYOLO-S手机检测模型实测:快速识别图片中的手机位置

DAMOYOLO-S手机检测模型实测&#xff1a;快速识别图片中的手机位置 获取更多AI镜像 想探索更多AI镜像和应用场景&#xff1f;访问 CSDN星图镜像广场&#xff0c;提供丰富的预置镜像&#xff0c;覆盖大模型推理、图像生成、视频生成、模型微调等多个领域&#xff0c;支持一键部署…

作者头像 李华
网站建设 2026/7/14 17:23:38

3个突破式步骤:用PyWxDump实现微信数据解密与记录导出

3个突破式步骤&#xff1a;用PyWxDump实现微信数据解密与记录导出 【免费下载链接】PyWxDump 获取微信账号信息(昵称/账号/手机/邮箱/数据库密钥/wxid)&#xff1b;PC微信数据库读取、解密脚本&#xff1b;聊天记录查看工具&#xff1b;聊天记录导出为html(包含语音图片)。支持…

作者头像 李华
网站建设 2026/7/14 17:23:40

GLM-OCR详细步骤:conda activate py310后验证torch.cuda.is_available()真值

GLM-OCR详细步骤&#xff1a;conda activate py310后验证torch.cuda.is_available()真值 当你满怀期待地激活了GLM-OCR项目所需的py310环境&#xff0c;准备大展身手时&#xff0c;却发现torch.cuda.is_available()返回了False&#xff0c;这无疑是当头一盆冷水。别担心&#…

作者头像 李华
网站建设 2026/7/14 17:23:41

MedGemma 1.5模型蒸馏实战:轻量化部署指南

MedGemma 1.5模型蒸馏实战&#xff1a;轻量化部署指南 1. 引言 医疗AI在实际部署中常常面临一个现实问题&#xff1a;大型模型虽然效果出色&#xff0c;但对硬件资源要求极高&#xff0c;难以在资源受限的医疗环境中落地。MedGemma 1.5作为谷歌最新发布的开源医疗多模态模型&…

作者头像 李华
网站建设 2026/7/14 17:23:54

美容美发小程序源码系统有哪些核心功能?覆盖美发店所有场景

温馨提示&#xff1a;文末有资源获取方式对于从事美容美发行业的创业者或技术开发者而言&#xff0c;选择一套功能完善、支持多门店且具备多用户架构的源码系统&#xff0c;不仅能满足自身门店的数字化需求&#xff0c;更可拓展为面向客户的商业产品&#xff0c;实现“一套源码…

作者头像 李华
网站建设 2026/7/14 17:23:53

LoRA训练助手实战:软件测试用例自动生成

LoRA训练助手实战&#xff1a;软件测试用例自动生成 1. 引言 想象一下这个场景&#xff1a;你是一个软件测试工程师&#xff0c;手头有一个新功能模块需要测试。按照传统方法&#xff0c;你需要先花半天时间阅读需求文档&#xff0c;再用一天时间设计测试用例&#xff0c;最后…

作者头像 李华