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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Docker之nacos的安装和使用

🎉🎉欢迎来到我的CSDN主页!🎉🎉 🏅我是君易--鑨,一个在CSDN分享笔记的博主。📚📚 🌟推荐给大家我的博客专栏《Docker之Dockerfile构建镜像》。🎯&…

python数字图像处理基础(九)——特征匹配

目录 蛮力匹配(ORB匹配)RANSAC算法全景图像拼接 蛮力匹配(ORB匹配) Brute-Force匹配非常简单,首先在第一幅图像中选取一个关键点然后依次与第二幅图像的每个关键点进行(描述符)距离测试&#x…

Android中矩阵Matrix实现平移,旋转,缩放和翻转的用法详细介绍

一,矩阵Matrix的数学原理 矩阵的数学原理涉及到矩阵的运算和变换,是高等代数学中的重要概念。在图形变换中,矩阵起到关键作用,通过矩阵的变换可以改变图形的位置、形状和大小。矩阵的运算是数值分析领域的重要问题,对…

GC6139——单通道5V高细分步进电机,应用于摇头机,X,Y控制,聚焦控制等产品中,可替代MS41939

GC6139是一款单通道5V低压步进电机驱动器,具有低噪声、低振动的特点,特别适用于相机的变焦或对焦系统、万向节等精密低噪声STM控制系统。该芯片为每个通道集成了64微步驱动器。带SPl接口,用户可以方便地调整驱动器的参数。该芯片还内置2通道L…

旅游项目day04

1. JWT有效期 封装用户登录对象, 在指定时间过期 2. 有些接口需要登录?有些不需要登录? 后端如何知道a需要登录,b不需要登录? 注解。 3. 目的地 一个区域下面包含多个目的地 数据库表: 1. 区域表 2.…

老子云支持70+格式模型转FBX/OBJ/STL/STP,一键处理无损转换!

老子云3D可视化平台是一个集合了3D编辑器、单模型轻量化、倾斜摄影轻量化、格式转换等一站式3D开发功能的强大技术平台。无论您是设计师、工程师还是科研人员,都可以在这个平台上轻松实现您的创意和想法。 老子云3D可视化平台是一个集合了3D编辑器、单模型轻量化、…

电子印章软件,如何实现招投标流程无纸化?

电子印章软件的出现,为招投标流程的无纸化提供了强有力的支持。在招投标场景,使用电子印章软件,实现无纸化流程,不仅能够提高工作效率,还能减少打印邮寄成本和环境污染。 微签作为电子印章软件中的佼佼者,…

网络安全产品之认识WEB应用防火墙

随着B/S架构的广泛应用,Web应用的功能越来越丰富,蕴含着越来越有价值的信息,应用程序漏洞被恶意利用的可能性越来越大,因此成为了黑客主要的攻击目标。传统防火墙无法解析HTTP应用层的细节,对规则的过滤过于死板&#…

回顾2023年总结和2024年计划

学其他博主,我也来总结一下,回顾2023年, 一、总结2023年 公众号共发表文章127篇,原创82篇,共22.4万字年阅读量为34.6万次今年最佳文章是《一起来学孟德尔随机化(Mendelian Randomization)》 不完全统计,帮…

OpenCV-Python(47):支持向量机

原理 线性数据分割 如下图所示,其中含有两类数据,红的和蓝的。如果是使用kNN算法,对于一个测试数据我们要测量它到每一个样本的距离,从而根据最近的邻居分类。测量所有的距离需要足够的时间,并且需要大量的内存存储训…

springcloud +Vue 前后端分离的onlinejudge在线评测系统

功能描述: 本系统的研究内容主要是设计并实现一个一个在线测评系统(OJ),该系统集成了博客、竞赛、刷题、教学,公告,个人管理六大功能,用户注册后登录系统,可以浏览本站的全部文章、发…

[HTML]Web前端开发技术14(HTML5、CSS3、JavaScript )鼠标经过图片显示大图 网页标题:表格标签的综合应用——喵喵画网页

希望你开心,希望你健康,希望你幸福,希望你点赞! 最后的最后,关注喵,关注喵,关注喵,佬佬会看到更多有趣的博客哦!!! 喵喵喵,你对我真的…

Spring 核心之 IOC 容器学习一

IOC 与 DI IOC(Inversion of Control)控制反转:所谓控制反转,就是把原先我们代码里面需要实现的对象创建、依赖的代码,反转给容器来帮忙实现。那么必然的我们需要创建一个容器,同时需要一种描述来让容器知道需要创建的对象与对象…

FPGA引脚选择(Select IO)--认知1

主要考虑功能角度(速度,电平匹配,内部程序编写)去找研究芯片内部资源 1. 关键字 HP I/O Banks, High performance The HP I/O banks are deisgned to meet the performance requirements of high-speed memory and other chip-to-…

hanlp,pkuseg,jieba,cutword分词实践

总结:只有jieba,cutword,baidu lac成功将色盲色弱成功分对,这两个库字典应该是最全的 hanlp[持续更新中] https://github.com/hankcs/HanLP/blob/doc-zh/plugins/hanlp_demo/hanlp_demo/zh/tok_stl.ipynb import hanlp # hanlp.pretrained.tok.ALL # 语种见名称最…

虚幻UE 特效-Niagara特效实战-雨天

回顾Niagara特效基础知识:虚幻UE 特效-Niagara特效初识 其他两篇实战:虚幻UE 特效-Niagara特效实战-火焰、烛火、虚幻UE 特效-Niagara特效实战-烟雾、喷泉 本篇笔记我们再来实战雨天,雨天主要用到了特效中的事件。 文章目录 一、雨天1、创建雨…

【前端HTML】HTML基础

文章目录 HTML标签标签属性 基本结构文档声明HTML标准结构HTML基础排版标签语义化标签块级元素与行内元素文本标签图片标签超链接跳转到指定页面跳转到文件跳转到锚点唤起指定应用 列表有序列表无序列表列表嵌套自定义列表 表格基本结构常用属性跨行跨列 常用标签表单基本结构常…

GPT应用程序上线注意的问题

在将GPT应用程序上线之前,有一些重要的问题需要注意,以确保应用程序的成功运行、用户满意度和合规性。以下是一些建议,希望对大家有所帮助。北京木奇移动技术有限公司,专业的软件外包开发公司,欢迎交流合作。 合规性和…

【Python】对象属性操作详细指南✨

Python 对象属性操作详细指南✨ 前言 在 Python 的世界里,理解和操作对象的属性是一项基础且重要的技能。掌握如何使用 Python 的内置函数来操作对象属性将大大提高编程效率。本文旨在提供一个全面的指南,介绍如何使用 Python 中的几个关键内置函数来处…

第14章_集合与数据结构拓展练习(前序、中序、后序遍历,线性结构,单向链表构建,单向链表及其反转,字符串压缩)

文章目录 第14章_集合与数据结构拓展练习选择填空题1、前序、中序、后序遍历2、线性结构3、其它 编程题4、单向链表构建5、单向链表及其反转6、字符串压缩 第14章_集合与数据结构拓展练习 选择填空题 1、前序、中序、后序遍历 分析: 完全二叉树: 叶结点…