Linux centos中find命令的多种用途:按照具体应用来详细说明find的用法举例
目录
一、find命令
二、find命令的语法
(一)语法格式
(二)选项
1、选项(option)介绍
2、控制符号链接的option
3、调试选项debugopts
4、优化选项
(三)表达式expression
1、选项options
2、测试 tests
3、动作actions
三、实际应用的例子
1、按名称查找文件:
2、按文件类型查找:
3、按文件大小查找:
4、按文件修改时间查找:
5、按文件权限查找:
6、按文件所有者查找:
7、组合条件查找:
8、与grep, xargs等结合,在结果中筛选或执行命令:
9、查找并执行命令:
10、忽略或避免某些条件:
12、递归查找:
一、find命令
Linux的find命令是最重要和最常用的命令之一,用于在目录树中查找文件和目录。它可以根据各种条件进行搜索,包括文件名、权限、用户和组、文件类型、文件大小、日期和时间等。
同时也有一些组合应用,可以方便进行各种操作。
很多文档都根据命令的语法来介绍,要想完成一个具体的搜索任务,还需要看每个命令,找到对应的用法。
为了节省大家的时间,本文简单介绍下find的语法,以方便查询;同时按照一些实际需要完成的任务,来介绍find的一些用途。也就是根据具体的应用场景来使用find命令。
二、find命令的语法
(一)语法格式
find [-H] [-L] [-P] [-D debugopts] [-Olevel] [path...] [expression]
(二)选项
1、选项(option)介绍
表达式列表中的“选项”。这些选项控制find的行为,但在最后一个路径名之后立即指定。五个“real”选项-H、-L、-P、-D和-O必须出现在第一个路径名之前(如果有的话)。双破折号--也可以用来表示任何剩余的参数都不是选项(尽管如果在起始点列表中使用通配符,则确保所有起始点都以“./”或“/”开头通常更安全)。
2、控制符号链接的option
-H、-L和-P选项控制符号链接的处理。后面的命令行参数将被视为文件名或要检查的目录,直到第一个以“-”开头的参数,或参数“(”或“!”。该参数和后面的任何参数自变量被认为是描述要搜索的内容的表达式。如果没有给出路径,则使用当前目录。如果没有给出任何表达式,而是使用表达式-print(但无论如何,您可能应该考虑使用-print0)
3、调试选项debugopts
打印诊断信息;这有助于诊断find为什么没有按您的意愿进行操作的问题。调试列表选项应以逗号分隔。在findutils的各个版本之间,调试选项的兼容性并不能得到保证。对于完整的有效调试选项列表,请参阅find-D帮助的输出。有效的调试选项包括帮助解释调试选项
tree 以原始和优化的形式显示表达式树。
stat 使用stat和lstat系统调用检查文件时打印消息。find程序尽量减少此类调用。
opt 打印与表达式树的优化有关的诊断信息;请参阅-O选项。
rates 打印一个摘要,指示每个谓词成功或失败的频率。
4、优化选项
-Olevel 启用查询优化。find程序对测试进行重新排序,以加快执行速度,同时保持整体效果;也就是说,具有副作用的谓词不会相对于彼此重新排序。优化级别有0,1,2,3几个等级。
(三)表达式expression
表达式expression由1选项options(影响整体操作而不是特定文件的处理,并且总是返回true)、2测试tests(返回true或false值)和3动作actions(具有单向作用,并返回true或false值)组成,所有这些都由运算符分隔。
1、选项options
所有选项始终返回true。除了-daystart、-follow和-regextype之外,这些选项会影响所有测试,包括在该选项之前指定的测试。这是因为在解析命令行时会处理选项,而在检查文件之前,测试不会执行任何操作。-daystart、-follow和-regextype选项在这方面有所不同,仅对稍后出现在命令行中的测试有影响。因此,为了清晰起见,最好将它们放在表达式的开头。如果你不这样做,就会发出警告。常用的有如下:
-daystart
-depth
-follow
-help
-maxdepth
-mindepth
-mount
-noleaf
-version
2、测试 tests
一些测试,例如-newerXY和-samefile,允许在当前检查的文件和命令行上指定的某个参考文件之间进行比较。当使用这些测试时,参考文件的解释由选项-H、-L和-P以及之前的任何后续选项决定,但在解析命令行时,只检查一次参考文件。如果无法检查引用文件(例如,stat(2)系统调用失败),则会发出错误消息, find以非零状态退出。有如下常用的tests:
- +n: 查找比 n 大的。
- -n: 查找比n 小的。
- n: 查找刚好是n的
- -amin n:查找在 n 分钟内被访问过的文件。
- -atime n:查找在 n*24 小时内被访问过的文件。
- -cmin n:查找在 n 分钟内状态发生变化的文件(例如权限)。
- -ctime n:查找在 n*24 小时内状态发生变化的文件(例如权限)。
- -mmin n:查找在 n 分钟内被修改过的文件。
- -mtime n:查找在 n*24 小时内被修改过的文件。
- -name pattern:按文件名查找,支持使用通配符 * 和 ?。
- -type type: 按文件类型查找,可以是 f(普通文件)、d(目录)、l(符号链接)等。
- -size [+-]size[cwbkMG]: 按文件大小查找,支持使用 + 或 - 表示大于或小于指定大小,单位可以是 c(字节)、w(字数)、b(块数)、k(KB)、M(MB)或 G(GB)。
- -mtime days: 按修改时间查找,支持使用 + 或 - 表示在指定天数前或后,days 是一个整数表示天数。
- -user username:按文件所有者查找。
- -group groupname:按文件所属组查找。
3、动作actions
常见的有如下:
-delete
-exec command
-exec command {} +
-execdir
-printf format
-prune True;
三、实际应用的例子
1、按名称查找文件:
(1)查找当前目录及其子目录下名为 "example.txt" 的文件:
find . -name "example.txt"`
(2)查找根目录/及其子目录下名为 "example.txt" 的文件:
find / -name "example.txt"`
(3)当前目录及其子目录下所有文件后缀为 .c 的文件列出来:
find . -name "*.c"`
2、按文件类型查找:
(1)查找当前目录及其子目录下的所有普通文件:
find . -type f
(2)查找当前目录及其子目录下的所有目录:
find . -type d
3、按文件大小查找:
查找大于 10MB 的文件:
find . -size +10M
4、按文件修改时间查找:
(1)查找在过去 7 天内修改过的文件:
find . -mtime -7
(2)查找 /var/log/test 目录下在 7 天前修改过的文件:
find /var/log/test -mtime +7
5、按文件权限查找:
查找所有可执行文件:
find . -executable
6、按文件所有者查找:
查找所有属于用户 "john" 的文件:
find . -user john
7、组合条件查找:
(1)查找所有 .txt 扩展名且在过去 7 天内修改过的文件:
find . -type f -name "*.txt" -mtime -7
(2)查找 /usr/local/log 目录中更改时间在 7 日以前的普通文件,并在删除之前询问它们:
find /usr/local/log -type f -mtime +7 -ok rm {} \;
8、与grep, xargs等结合,在结果中筛选或执行命令:
(1)grep可以用来将 find 的输出作为参数,再进行一次筛选,例如,查询所有 .cpp扩展名的文件,同时文件名或者路径中带有“视频监控平台”的文件,可以这样做:
find . -name "*.cpp" | grep 视频监控平台
执行结果如下:
(2)xargs 可以用来将 find 的输出作为参数传递给其他命令。例如,如果你想删除所有 .bak 扩展名的文件,你可以这样做:
find . -name "*.bak" | xargs rm -f
9、查找并执行命令:
(1)可以使用 -exec 选项来对找到的每个文件执行一个命令。例如,为找到的所有 .sh文件打印其修改时间:
find . -name "*.sh" -exec ls -l {} \;
执行结果如下:
(2)查找当前目录中文件属主具有读、写权限,并且文件所属组的用户和其他用户具有读权限的文件,并列出完整路径:
find . -type f -perm 644 -exec ls -l {} \;
(3)查找系统中所有文件长度为 0 的普通文件,并列出它们的完整路径:
find / -type f -size 0 -exec ls -l {} \;
(4)找到tes文件并执行操作(例如删除):
find /path/search -name "tes" -exec rm {} \;
10、忽略或避免某些条件:
(1)使用 -prune 选项来避免进入某些目录。例如,避免进入 .git 子目录:
find . -path .git -prune -o -print
(2)查找所有 .txt 文件,但忽略大小为 0 的文件:
find . -name "*.txt" ! -size 0 -print
12、递归查找:
默认情况下,find 命令会递归地查找子目录。如果你想限制搜索深度,可以使用 -maxdepth 和 -mindepth 选项。例如,只在当前目录中查找(不包括子目录):
find . -maxdepth 1 -name "*.txt" -print
相关文章:

Linux centos中find命令的多种用途:按照具体应用来详细说明find的用法举例
目录 一、find命令 二、find命令的语法 (一)语法格式 (二)选项 1、选项(option)介绍 2、控制符号链接的option 3、调试选项debugopts 4、优化选项 (三)表达式expression 1、选项options 2、测试…...

服务器数据恢复—OceanStor存储raid5热备盘同步数据失败的数据恢复案例
服务器数据恢复环境: 华为OceanStor某型号存储,存储内有一组由24块硬盘组建的raid5阵列,配置1块热备盘。 服务器故障: 该存储raid5阵列中有一块硬盘离线,热备盘自动激活并开始同步数据,在热备盘同步数据的…...

Xline v0.6.1: 一个用于元数据管理的分布式KV存储
Xline是什么?我们为什么要做Xline? Xline是一个基于Curp协议的,用于管理元数据的分布式KV存储。现有的分布式KV存储大多采用Raft共识协议,需要两次RTT才能完成一次请求。当部署在单个数据中心时,节点之间的延迟较低&a…...

【CSS】解决height = line-height 文字不垂直居中(偏上、偏下)的问题
解决办法1: 查看 font-family 属性,确认是否是因为字体而导致的不垂直居中问题。 其他小知识: 基线就是小写x字母的下边缘(线) 就是我们常说的 基线。line-height 属性设置的行高也就是定义的两行文字基线之间的距离! 参考文章:…...

天津想转行学python培训班靠谱吗?
现在的职业如此繁多,很多人把高薪当成衡量工作好坏的重要标准,因此IT行业以超出其他行业几倍薪资水平成为不错的选择,而Python又以其简单易学好上手成为大家所青睐的学习目标。 Python发展前景如何 Python语言就业发展方向广泛:…...

(C语言)冒泡排序
一、运行结果; 二、源代码; # define _CRT_SECURE_NO_WARNINGS # include <stdio.h>//实现buble_sort函数; void buble_sort(int arr[], int sz) {//初始化变量值;int i 0;//嵌套循环冒泡排序;//外层循环&…...

怎么样的布局是符合可制造性的PCB布局?
满足可制造性、可装配性、可维修性要求,方便调试的时候于检测和返修,能够方便的拆卸器件: 1)极性器件的方向不要超过2种,最好都进行统一方向等要求,如图1-1所示; 图1-1 极性器件方向统一摆放 2…...
第28关 k8s监控实战之Prometheus(九)
------> 课程视频同步分享在今日头条和B站 大家好,我是博哥爱运维。早期我们经常用邮箱接收报警邮件,但是报警不及时,而且目前各云平台对邮件发送限制还比较严格,所以目前在生产中用得更为多的是基于webhook来转发报警内容到企…...
安全防御之可信计算技术
可信计算技术是一种计算机安全体系结构,旨在提高计算机系统在面临各种攻击和威胁时的安全性和保密性。它通过包括硬件加密、受限访问以及计算机系统本身的完整性验证等技术手段,确保计算机系统在各种攻击和威胁下保持高度安全和保密性。 一、可信计算基…...

FPGA引脚物理电平(内部资源,Select IO)-认知2
引脚电平 The SelectIO pins can be configured to various I/O standards, both single-ended and differential. • Single-ended I/O standards (e.g., LVCMOS, LVTTL, HSTL, PCI, and SSTL) • Differential I/O standards (e.g., LVDS, Mini_LVDS, RSDS, PPDS, BLVDS, and…...

PBR材质纹理下载
03:10 按照视频里的顺序 我们从第6个网站开始倒数 点击本行文字或下方链接 进入查看 6大网站地址 网址查看链接: http://www.uzing.net/community_show-1962-48-48-35.html 06 Tectures Wood Fence 001 | 3D TEXTURES 简介:最大的纹理网站之一&#x…...

mac PyCharm 使用conda环境
1 使用conda创建虚拟环境 conda create -n test6 python3.9 -y conda activate test62 选择conda环境 本地 选择已经存在的conda环境 右下角会显示现在的环境。...
10个常用的正则表达式
1 电话号码 let r1 /^1[3-9]\d{9}$/g console.log(r1.exec(18596932371)) 2 qq号 let r2 /^[1-9][0-9]{4,9}$/g console.log(r2.exec(123456)) 3 十六进制的方式表示颜色 let r3 /^#([0-9a-fA-F]{6}|[0-9a-fA-F]{3})$/g // # 可能可有可无,如果不需要#&a…...
对一手游的自定义 luajit 字节码的研究
对一手游的自定义 luajit 字节码的研究 前言 最近闲下来之后无聊研究起了一个unity手游 大量使用了 lua (或者说就是 lua 写的 ) 看到网上已有的一些针对方案 都觉得太不方便 于是深入研究了一下 他自定义的 luajit 情况研究 首先 这是一个 unity的 传…...

1125. 牛的旅行 (Floyd算法,最短路)
1125. 牛的旅行 - AcWing题库 农民John的农场里有很多牧区,有的路径连接一些特定的牧区。 一片所有连通的牧区称为一个牧场。 但是就目前而言,你能看到至少有两个牧区不连通。 现在,John想在农场里添加一条路径(注意ÿ…...
oracle “Interested Transaction List”(ITL)的概念
“Interested Transaction List”(ITL)的概念。让我们逐点理解: 块头和ITL: 每个数据库段块的块头都包含一个Interested Transaction List(ITL)。ITL用于确定数据库开始修改块时某个事务是否未提交。 ITL的…...

kali下-MSF-ftp_login模块破解FTP账号及密码
一、环境准备 两台设备在同一个网络内 一台kali系统:192.168.10.128 一台winserver2016:192.168.10.132 二、MSF介绍 metasploit 全称是The Metasploit Framework,又称MSF,是Kali 内置的一款渗透测试框架,也是全球…...

ELK之Filebeat输出日志格式设置及输出字段过滤和修改
一、Filebeat输出日志格式设置 1.1 编辑vim filebeat.yml文件,修改输出格式设置 # output to console output.console:codec.format: string: %{[@timestamp]} %{[message]}pretty: true### 1.2 测试 执行 ./filebeat -e 可以看到/tmp/access.log(目前文件里只有140.77.188…...

【开源】基于JAVA的河南软件客服系统
目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 系统管理人员2.2 业务操作人员 三、系统展示四、核心代码4.1 查询客户4.2 新增客户跟进情况4.3 查询客户历史4.4 新增服务派单4.5 新增客户服务费 五、免责说明 一、摘要 1.1 项目介绍 基于JAVAVueSpringBootMySQL的河…...

基于SpringBoot的社区帮扶对象管理系统
文章目录 项目介绍主要功能截图:部分代码展示设计总结项目获取方式 🍅 作者主页:超级无敌暴龙战士塔塔开 🍅 简介:Java领域优质创作者🏆、 简历模板、学习资料、面试题库【关注我,都给你】 &…...

Unity3D中Gfx.WaitForPresent优化方案
前言 在Unity中,Gfx.WaitForPresent占用CPU过高通常表示主线程在等待GPU完成渲染(即CPU被阻塞),这表明存在GPU瓶颈或垂直同步/帧率设置问题。以下是系统的优化方案: 对惹,这里有一个游戏开发交流小组&…...
MySQL 隔离级别:脏读、幻读及不可重复读的原理与示例
一、MySQL 隔离级别 MySQL 提供了四种隔离级别,用于控制事务之间的并发访问以及数据的可见性,不同隔离级别对脏读、幻读、不可重复读这几种并发数据问题有着不同的处理方式,具体如下: 隔离级别脏读不可重复读幻读性能特点及锁机制读未提交(READ UNCOMMITTED)允许出现允许…...

SCAU期末笔记 - 数据分析与数据挖掘题库解析
这门怎么题库答案不全啊日 来简单学一下子来 一、选择题(可多选) 将原始数据进行集成、变换、维度规约、数值规约是在以下哪个步骤的任务?(C) A. 频繁模式挖掘 B.分类和预测 C.数据预处理 D.数据流挖掘 A. 频繁模式挖掘:专注于发现数据中…...

抖音增长新引擎:品融电商,一站式全案代运营领跑者
抖音增长新引擎:品融电商,一站式全案代运营领跑者 在抖音这个日活超7亿的流量汪洋中,品牌如何破浪前行?自建团队成本高、效果难控;碎片化运营又难成合力——这正是许多企业面临的增长困局。品融电商以「抖音全案代运营…...
电脑插入多块移动硬盘后经常出现卡顿和蓝屏
当电脑在插入多块移动硬盘后频繁出现卡顿和蓝屏问题时,可能涉及硬件资源冲突、驱动兼容性、供电不足或系统设置等多方面原因。以下是逐步排查和解决方案: 1. 检查电源供电问题 问题原因:多块移动硬盘同时运行可能导致USB接口供电不足&#x…...

Vue2 第一节_Vue2上手_插值表达式{{}}_访问数据和修改数据_Vue开发者工具
文章目录 1.Vue2上手-如何创建一个Vue实例,进行初始化渲染2. 插值表达式{{}}3. 访问数据和修改数据4. vue响应式5. Vue开发者工具--方便调试 1.Vue2上手-如何创建一个Vue实例,进行初始化渲染 准备容器引包创建Vue实例 new Vue()指定配置项 ->渲染数据 准备一个容器,例如: …...

NFT模式:数字资产确权与链游经济系统构建
NFT模式:数字资产确权与链游经济系统构建 ——从技术架构到可持续生态的范式革命 一、确权技术革新:构建可信数字资产基石 1. 区块链底层架构的进化 跨链互操作协议:基于LayerZero协议实现以太坊、Solana等公链资产互通,通过零知…...

AI书签管理工具开发全记录(十九):嵌入资源处理
1.前言 📝 在上一篇文章中,我们完成了书签的导入导出功能。本篇文章我们研究如何处理嵌入资源,方便后续将资源打包到一个可执行文件中。 2.embed介绍 🎯 Go 1.16 引入了革命性的 embed 包,彻底改变了静态资源管理的…...

GitFlow 工作模式(详解)
今天再学项目的过程中遇到使用gitflow模式管理代码,因此进行学习并且发布关于gitflow的一些思考 Git与GitFlow模式 我们在写代码的时候通常会进行网上保存,无论是github还是gittee,都是一种基于git去保存代码的形式,这样保存代码…...

并发编程 - go版
1.并发编程基础概念 进程和线程 A. 进程是程序在操作系统中的一次执行过程,系统进行资源分配和调度的一个独立单位。B. 线程是进程的一个执行实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位。C.一个进程可以创建和撤销多个线程;同一个进程中…...