Linux centos中find命令的多种用途:按照具体应用来详细说明find的用法举例

这篇具有很好参考价值的文章主要介绍了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 视频监控平台

        执行结果如下:

Linux centos中find命令的多种用途:按照具体应用来详细说明find的用法举例,linux,服务器,centos,视频,音视频,实时音视频,网络

        (2)xargs 可以用来将 find 的输出作为参数传递给其他命令。例如,如果你想删除所有 .bak 扩展名的文件,你可以这样做:    

                        find . -name "*.bak" | xargs rm -f

9、查找并执行命令:

        (1)可以使用 -exec 选项来对找到的每个文件执行一个命令。例如,为找到的所有 .sh文件打印其修改时间:    

                find . -name "*.sh" -exec ls -l {} \;

       执行结果如下:

Linux centos中find命令的多种用途:按照具体应用来详细说明find的用法举例,linux,服务器,centos,视频,音视频,实时音视频,网络

        (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文章来源地址https://www.toymoban.com/news/detail-804473.html

到了这里,关于Linux centos中find命令的多种用途:按照具体应用来详细说明find的用法举例的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Linux具体命令(三)

    命令 ip a a 10.0.0.1/24 dev eth1 是在 Linux 系统中使用 ip 命令来配置一个静态 IP 地址到一个特定的网络接口。这个命令的各个部分解释如下: ip :这是用于管理 IPv4 和 IPv6 网络配置的命令行工具。 a :这是 address 的简写,表示添加(address)操作。 a :这是 add 的简写,表示添加(

    2024年01月24日
    浏览(38)
  • Linux常用命令——find命令

    在指定目录下查找文件 find命令 用来在指定目录下查找文件。任何位于参数之前的字符串都将被视为欲查找的目录名。如果使用该命令时,不设置任何参数,则find命令将在当前目录下查找子目录与文件。并且将查找到的子目录和文件全部进行显示。 语法 选项 参数 起始目录

    2024年02月06日
    浏览(40)
  • linux万能查询命令——find命令

            find命令用来寻找文件或目录,功能非常强大,可以在查找到的文件上去执行命令,准确查找,遍历整个目录下的所有文件,可以对查询到的文件进行指定的动作,即查看、删除、移动等操作。 目录 1、常用查找命令 2、查找结果后的处理 3、按照文件名搜索查找  4、

    2024年02月16日
    浏览(48)
  • Linux常用命令之find命令详解

    find命令主要用于:用来在指定目录下查找文件。任何位于参数之前的字符串都将被视为欲查找的目录名。 如果使用该命令时,不设置任何参数,则find命令将在 当前目录 下查找子目录与文件。并且将查找到的子目录和文件全部进行显示。 是我们在日常维护Linux时必备的一个

    2024年02月03日
    浏览(37)
  • Linux学习之find命令

    find 命令可以根据给定的路径和表达式查找指定的文件或目录。 -name :按照文件名查找文件。 -perm :按照文件权限来查找文件。 -user :按照文件属主来查找文件。 -group :按照文件所属的组来查找文件。 -mtime -n /+n :按照文件的更改时间来查找文件。 - n :表示文件更改时间

    2024年02月14日
    浏览(41)
  • CentOS系列:【Linux】CentOS7操作系统安装nginx实战(多种方法,超详细)

    本次的实验环境见下表: 操作系统 服务器IP hostname centos7.6 192.168.1.41 mufengrow41 如何查看相应的参数: 查看操作系统: 查看ip 2.1 添加yum源 nginx不在的默认的yum源中, 可以使用epel或者官网提供的yum源来安装。 以下两种方法,选择任意一种即可,也就是2.1.1和2.1.2两个小节的内

    2024年04月15日
    浏览(61)
  • linux系统(centos、ubuntu、银河麒麟服务、uos、deepin)判断程序是否已安装,通用判断方法:使用所有应用和命令的判断

    项目中需要判断linux服务器中是否已经安装了某个服务 方法有很多种,但是很多都不通用, 脚本代码就不容易做成统一的 用下面的脚本代码去进行判断 脚本意思如下: 输入java -version命令,将返回的字符串输出第一行 如果里面包含java version这个字符串则说明jdk已经安装  下

    2024年02月11日
    浏览(60)
  • linux find命令搜索日志内容

    linux find命令搜索日志内容 加上-a 是为了不报查出 binary 的错 服务器会返回 包含所查字符的整行日志信息

    2024年02月07日
    浏览(52)
  • 【Linux系列】tree和find命令

    💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学习,不断总结,共同进步,活到老学到老 导航 檀越剑指大厂系列:全面总

    2024年04月08日
    浏览(35)
  • Linux下使用find命令查找文件

    0、find 命令,查找目录下以2022开头的文件 1、find 命令,查找类型为文件并且文件名称以2022开头的文件 2、find命令统计查找出来的文件总数量 3、进阶用法,编写sh脚本使用sh ./test.sh 命令运行,或者粘贴至窗口直接运行。 4、如果创建test.sh脚本后可能无法运行,提示如下错误

    2024年02月11日
    浏览(104)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包