【工具】Linux 中 find 命令使用教程

find 命令是 Linux 系统中最强大、最灵活的文件搜索工具,其能力远超简单的文件名匹配。掌握 find 能让你在复杂的文件系统中精准定位目标,实现高效的文件管理。


一、命令结构与核心概念

find [起始路径] [选项] [表达式]
  • 起始路径:搜索的根目录(默认为当前目录)
  • 选项:控制搜索行为(如深度限制)
  • 表达式:定义搜索条件(最核心部分)

文件类型标识符
f=普通文件, d=目录, l=符号链接, s=套接字, p=命名管道, b=块设备, c=字符设备


二、核心搜索条件详解

1. 基础属性搜索
选项功能说明使用示例
-name按文件名匹配(区分大小写)find /var -name "*.log"
-iname按文件名匹配(不区分大小写)find . -iname "README*"
-type按文件类型过滤find ~ -type d -name "Documents"
-size按文件大小筛选find / -size +100M -size -1G
-empty查找空文件/目录find . -type f -empty

文件大小单位
c=字节, k=KB, M=MB, G=GB(默认512字节块)

2. 时间维度搜索
选项时间基准使用示例
-mtime内容修改时间(Modify)find /backup -mtime -7 (7天内修改)
-atime访问时间(Access)find /var/log -atime +30 (30天未访问)
-ctime元数据变更时间(Change)find . -ctime 0 (24小时内变更)
-mmin分钟级修改时间find /tmp -mmin -10 (10分钟内修改)

时间符号
+n=超过n天, -n=n天内, n=正好n天

3. 权限与归属
# 查找属主为www-data的文件
find /srv -user www-data -type f# 查找组可写的目录
find . -type d -perm /g=w# 查找精确权限644的文件
find ~ -perm 0644

权限模式
/mode=任意匹配位, -mode=完全包含, mode=精确匹配


三、高级操作技巧

1. 动作执行(Action)
# 删除7天前的临时文件
find /tmp -type f -mtime +7 -delete# 对找到的文件执行命令(安全处理空格)
find . -name "*.jpg" -print0 | xargs -0 rm# 复制所有PDF到目标目录
find ~/Documents -name "*.pdf" -exec cp {} /backup \;

-exec 技巧

  • {} 代表文件名
  • \; 结束命令(每条文件执行一次)
  • + 结尾可批量处理(更高效):
    find . -name "*.txt" -exec tar rf all.tar {} +
2. 深度控制
# 仅搜索当前目录(不递归)
find . -maxdepth 1 -type f# 跳过.git目录(提高搜索效率)
find /project -path "*/.git" -prune -o -name "*.py" -print
3. 逻辑组合
# 查找大于10MB的非图片文件
find /data \( -name "*.jpg" -o -name "*.png" \) ! -size +10M# 查找可执行但未设置SUID的文件
find /usr/bin -type f -perm /u=x ! -perm /u=s

逻辑运算符
!=非, -o=或, -a=与(默认)


四、实用场景示例

  1. 清理旧文件
find /var/log -name "*.log.old" -mtime +30 -delete
  1. 批量修改权限
find /srv/web -type f -perm 0777 -exec chmod 644 {} \;
  1. 多条件备份
find /home \( -name "*.docx" -o -name "*.xlsx" \) -mtime -1 -exec tar rvf backup.tar {} +
  1. 查找重复文件
find . -type f -printf "%s %p\n" | sort -n | uniq -d

五、帮助与调试

# 查看简明帮助
find --help# 查看完整手册(推荐)
man find# 预览将执行的操作
find . -name "*.tmp" -print # 先打印确认

安全提示
执行 -delete-exec rm 前务必先用 -print 验证结果!


总结

find 的强大在于其表达式的灵活组合。关键掌握:

  1. 属性匹配(name/type/size)
  2. 时间筛选(mtime/atime/ctime)
  3. 权限控制(perm/user)
  4. 动作执行(exec/delete)
  5. 逻辑组合(!/-o/-a)

通过管道与其他命令(如 xargs, grep, sort)结合,可构建出极其强大的文件处理工作流。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/pingmian/86175.shtml
繁体地址,请注明出处:http://hk.pswp.cn/pingmian/86175.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

0629-

0629 0629操作3. 权限 0629 操作 进入数据库 mysql -uroot -proot123 .use idatabase; select * from customer; 2.select distinct name,idnum from customer; 3.UPDATE customer SET idnum left(MD5(idnum),16); 4. UPDATE customer SET phone CONCAT( LEFT(p…

JVM调优实战 Day 6:JVM性能监控工具实战

【JVM调优实战 Day 6】JVM性能监控工具实战 文章简述 在Java应用的性能优化过程中,JVM性能监控工具是不可或缺的“眼睛”。它们能够帮助开发者实时掌握系统运行状态,识别性能瓶颈,并为后续调优提供数据支撑。本文作为“JVM调优实战”系列的第…

【嘉立创EDA】PCB 如何按板框轮廓进行铺铜

文章路标👉 :one: 文章解决问题:two: 主题内容:three: 参考方法be end..1️⃣ 文章解决问题 操作环境:嘉立创EDA专业版 V2.2.40 本文使用嘉立创EDA,描述如何在PCB设计时,直接使用板框轮廓进行铺铜。本文将此过程记录,以供有需要的读者参考。 2️⃣ 主题内容 在PCB设计…

dockerfile命令及构建

一,dockerfile常用命令 命令介绍FROM–指定基础镜像LABEL作者信息USER切换运行属主身份WORKDUR切换工作目录ENV用于docker容器设置环境变量RUN用来执行命令行的命令COPY把宿主机文件复制到镜像中去ADD将文件路径复制添加到容器内部路径EXPOSE为容器打开指定要监听的…

uniApp实战四:网络请求封装

文章目录 1.最终效果预览2.请求封装3.创建config配置文件4.创建api请求5.页面调用 说明:当前笔记基于Vue3开发,HbuilderX版本4.66 1.最终效果预览 2.请求封装 在util/request.js下创建js文件,代码如下 import config from /configconst tim…

MCP协议全解:大模型时代的能力开放与服务集成最佳实践

一、MCP协议是什么? MCP(Model Context Protocol,模型上下文协议)是大模型和多智能体(Agent)生态中,用于标准化描述和传递上下文信息、能力开放、服务集成的协议。它的目标是让不同模型、Agent…

oracle 返回最新记录

在Oracle数据库中,如果你想获取一个表中基于某些条件的最新记录,通常有两种常见的方法:使用ROWID或者使用带有ORDER BY和ROWNUM的子查询。下面我将介绍这两种方法的基本用法。 方法1:使用ROWID 如果你的表有一个时间戳字段或者递…

华为云服务器:Can’t connect to MySql server on ‘localhost’(10060)

本地远程连接服务器数据库,提示10060 在 Ubuntu/Debian 系统中,检查 3306 端口是否开启需要从两个方面验证:MySQL 服务是否监听该端口以及防火墙是否允许外部访问该端口。以下是具体步骤: sudo ufw status查看到为开启mysql端口 …

利用Percona XtraDB Cluster搭建MySql高可用集群

引言拉取镜像创建单节点实例(一般在测试环境中使用)自定义网络(集群间相互隔离)映射数据目录创建docker-compose PXC容器用docker-compose启动PXC集群集群验证数据库负载均衡的必要性Haproxy负载均衡器部署故障排查引言 告别单点故障,拥抱持续可用——构建基于 Percona X…

Leetcode 3592. Inverse Coin Change

Leetcode 3592. Inverse Coin Change 1. 解题思路2. 代码实现 题目链接:3592. Inverse Coin Change 1. 解题思路 这一题的话思路上我们走的是一个贪婪算法的思路,即从小到大依次考察,显然,每一次当前最小的非零面额有且必有当前…

打造属于你的AI智能体,从数据开始 —— 使用 Bright Data MCP+Trae快速构建垂直智能体

一、AI智能体的机遇与挑战 最近这两年全民AI热潮开始,各种智能体应用层出不穷。在AI智能体火热的当下,越来越多开发者想要构建自己的智能体,特别是垂直领域,需求更是旺盛。比如招聘助手、电商导购、财经分析师等等。从技术角度来…

嵌入式自学四十八天

时钟 cpu528MHz, PLL:锁相环电路 倍频功能:Fin*n Fout Prescale: 预分频器 降频 Fin/m Fout PFD:相位分子分频器 Fin *n/m Fout 时钟开了后,先到时钟根产生器,对时钟频率更改&…

光谱相机应对复杂环境条件的关键技术与方案

一、极端温度适应性‌ ‌主动温控系统‌ ‌半导体冷却(TEC)‌:维持探测器在5-40℃工作区间,防止高温噪声(如SPECIM FX17)。 ‌散热结构‌:铝合金外壳散热鳍片,工业级相机可在-10℃…

个人技术文档库构建实践:基于Cursor和GitHub的知识管理系统(含cursor rules)

技术选型 核心工具链 Cursor编辑器:AI辅助写作,智能补全和结构优化GitHub:版本控制、跨设备同步、团队协作Markdown:轻量级格式,跨平台兼容,与Git完美集成 与主流工具对比 选择CursorGitHub适合&#xf…

烟花爆竹生产企业库房存储安全风险预警系统

烟花爆竹生产企业库房存储安全风险预警系统是保障库房物资安全、规范作业流程、防范安全事故的重要技术手段,涵盖多个关键预警功能。​ 温湿度预警​ 在库房内安装温湿度传感器,这些传感器如同敏锐的“环境感知员”,能够实时监测库房内环境变…

LINUX 625 DNS域名管理系统

建安错题 根据《安全色》,红、黄、蓝、绿四种安全色各自传递着不同的安全含义和信息,其中表示要求人们必须遵守的规定的颜色是()。 根据《安全色》国家标准(GB 2893-2008),四种安全色的含义如下: ​​红色​​&#…

FastMCP框架进行MCP开发:(三)从SSE升级到SteamableHTTP

一、前言 在MCP(Model Context Protocol)中,Streamable HTTP和SSE(Server-Sent Events)都是用于实现客户端与服务器之间通信的传输机制。然而,它们在设计、功能以及性能表现上有着显著的区别。 二、SSE在…

Android 15 变更及适配攻略

2025年的第一篇Android适配,比以往来的更晚一些。废话不多说,我们开始!! 准备工作 首先将我们项目中的 targetSdk和compileSdk 升至 35。 推荐使用Android Studio Koala Feature Drop | 2024.1.2或更高版本。AGP版本最低升级到…

Vue项目使用defer优化页面白屏,性能优化提升,秒加载!!!

defer表示延迟加载,针对大量节点的渲染加载,结合使用关键帧requestAnimationFrame的形式来分片加载,可以优化白屏时间 知识补充: requestAnimationFrame requestAnimationFrame 是根据帧数来执行回调函数的,就是屏幕…

sentinel与seata组件在微服务中的基本作用

微服务基础内容: 在微服务中,首先学习了微服务的横向拆分与纵向拆分,纵向拆分指按照功能拆分模块,横向拆分指将高复用的模块单独拆分,使纵向拆分的模块去调用这部分内容。 学习了基本拆分后,需要知道微服…