专栏首页云计算教程系列在Linux中使用find命令行查找文件
原创

在Linux中使用find命令行查找文件

find是一个基于条件机制递归过滤文件系统中对象的命令。使用find搜索文件系统中的文件或目录。使用-exec标志,可以在同一命令中找到并立即处理文件。

个人推荐您使用免费的腾讯云开发者实验室进行试验,学会安装后在购买服务器

按名称或扩展名查找Linux文件

使用find命令行按名称或扩展名查找特定文件。下面的示例是在/home/username/中查到以.err结尾的所有文件:

find /home/username/ -name "*.err"

常见的Linux查找命令和语法

find 表达式采用以下形式:

find options starting/path expression
  • options属性将控制find进程的行为和优化方法。
  • starting/path属性将定义find开始过滤的顶级目录。
  • expression属性控制搜索目录层次结构以生成输出的测试。

下面是示例命令:

find -O3 -L /var/www/ -name "*.html"

此命令启用最大优化级别(-O3)并允许find遵循符号链接(-L)。在/var/www/下面的整个目录树中搜索以.html结尾的文件。

基本示例

命令

描述

find . -name testfile.txt

在当前和子目录中找到名为testfile.txt的文件。

find /home -name *.jpg

在/home中查找所有以.jpg结尾的文件

find . -type f -empty

在当前目录中查找空文件。

find /home -user exampleuser -mtime 7 -iname ".db"

查找用户名为exampleuser的用户在过去7天内修改的所有.db文件(忽略文本大小写)。

查找选项和优化

默认配置find将忽略快捷方式文件。如果要find跟随并返回符号链接,可以将-L选项添加到命令中,如上例所示。

find优化其过滤策略以提高性能。三个可供用户选择的优化级别被指定为-O1-O2-O3。在运行所有其他测试之前,-O1优化是默认值并强制find基于文件名进行过滤。

-02级别上的优化优先考虑文件名过滤器,就像在-01中一样,然后在处理其他更占用资源的条件之前运行所有文件类型过滤。级别-03优化允许find执行最严格的优化,并根据相关费用和成功的可能性重新安排所有测试。

命令

描述

-O1

(默认)首先根据文件名过滤。

-O2

首先是文件名,然后是文件类型。

-O3

允许find根据资源和可能性的有效使用自动重新排序搜索。成功

-maxdepth X

搜索当前目录以及所有X级别的子目录。

-iname

搜索时不考虑文本情况。

-not

仅返回与测试用例不匹配的结果。

-type f

搜索文件。

-type d

搜索目录。

按修改时间查找文件

find命令包含根据上次修改文件的时间过滤目录层次结构的功能:

find / -name "*conf" -mtime 7
find /home/exampleuser/ -name "*conf" -mtime 3

第一个命令返回整个文件系统中所有文件的列表,这些文件以字符conf结尾并在过去7天内被修改。第二个命令过滤exampleuser用户的主目录,查找名称以conf字符结尾并在前3天内被修改的文件。

使用Grep根据内容查找文件

find命令只能根据文件名和元数据过滤目录层次结构。如果您需要根据文件内容进行搜索,请使用grep等工具。请考虑以下示例:

find . -type f -exec grep "example" '{}' \; -print

这将搜索当前目录层次结构(.)中的每个文件(-type f),然后为每个满足条件的文件运行grep“example”命令。匹配的文件打印在屏幕上(-print)。花括号({})是查找匹配结果的占位符。{}用单引号(')括起来,以避免将格式不正确的文件名传递给grepexec命令以分号(;)结束,分号应该转义(\;),以避免shell对其进行解释。

在执行-exec选项之前,这种命令可能已使用xargs命令生成类似的输出:

find . -type f -print | xargs grep "example"

如何使用查找命令查找和处理文件

exec选项对匹配find表达式的每个对象运行命令。考虑下面的例子::

find . -name "rc.conf" -exec chmod o+r '{}' \;

这将为命名为rc的文件过滤当前层次结构(.)中的每个对象。运行chmod o+r命令修改查找结果的文件权限。

与-exec一起运行的命令在find进程的根目录中执行。使用-execdir在匹配所在的目录中执行指定的命令。这可能会减轻安全问题,并为某些操作产生更理想的性能。

-exec-execdir选项运行时没有进一步提示。如果您希望在采取行动之前得到提示,请将-exec替换为-ok-execdir替换为-okdir

如何在Linux命令行查找和删除文件

警告 请谨慎使用此选项。

-delete选项添加到匹配表达式的末尾,这样就能删除所有匹配的文件。请务必确定查找结果与您要删除的文件匹配。

在以下示例中,find查找从当前目录开始并完全递归到目录树中的层次结构中的所有文件。在此示例中,find将删除以.bak字符结尾的所有文件:

find . -name "*.bak" -delete

总结

怎样,你学会了嘛?赶快购买服务器尝试下吧! 想要学习更多相关知识,请访问腾讯云云+社区


参考文献:《Find Files in Linux, Using the Command Line》

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 如何在CentOS 7上安装和使用Docker Compose

    Docker是一个很棒的工具,但要真正充分发挥其潜力,最好是应用程序的每个组件都在自己的容器中运行。对于具有大量组件的复杂应用程序,编排所有容器以一起启动和关闭...

    大瓜皮
  • 如何将PostgreSQL数据目录移动到Ubuntu 18.04上的新位置

    数据库随着时间的推移而增长,有时会超出原始文件系统的空间。当它们与操作系统的其余部分位于同一分区时,这也可能导致I / O争用。

    大瓜皮
  • 如何在Ubuntu 16.04上移动ownCloud的数据目录

    ownCloud是一种能够将您的数字生活存储在私人服务器上的强大解决方案。默认情况下,数据与操作系统保存在同一分区中,这可能会导致可用磁盘空间不足。例如,随着高...

    大瓜皮
  • Linux常用命令: find文件查找

    以谁为师
  • Linux find 命令

    find 命令在linux中是很常用到的一个查找命令,它的功能非常地强大。可以结合正则匹配来搜索系统中的指定的内容,以下我就记录一下这个find常用到的一些用法...

    阳光岛主
  • 一起来学演化计算-matlab基本函数find

    DrawSky
  • 实例讲解linux强大的find命令

    章鱼喵
  • Linux基础学习之文件查找find的常见用法

    在linux的日常管理中,find的使用频率很高,熟练掌握对提高工作效率很有帮助。

    砸漏
  • Linux 基础:文件查找 find

    在linux的日常管理中,find的使用频率很高,熟练掌握对提高工作效率很有帮助。 find的语法比较简单,常用参数的就那么几个,比如 -name、 -type...

    程序员宝库
  • Linux 基础:文件查找 find

    在linux的日常管理中,find的使用频率很高,熟练掌握对提高工作效率很有帮助。 find的语法比较简单,常用参数的就那么几个,比如 -name、 -type...

    程序员宝库

扫码关注云+社区

领取腾讯云代金券