前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >在Linux中使用find命令行查找文件

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

原创
作者头像
大瓜皮
修改2018-08-15 17:48:44
4K0
修改2018-08-15 17:48:44
举报
文章被收录于专栏:云计算教程系列

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

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

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

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

代码语言:javascript
复制
find /home/username/ -name "*.err"

常见的Linux查找命令和语法

find 表达式采用以下形式:

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

下面是示例命令:

代码语言:javascript
复制
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命令包含根据上次修改文件的时间过滤目录层次结构的功能:

代码语言:javascript
复制
find / -name "*conf" -mtime 7
find /home/exampleuser/ -name "*conf" -mtime 3

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

使用Grep根据内容查找文件

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

代码语言:javascript
复制
find . -type f -exec grep "example" '{}' \; -print

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

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

代码语言:javascript
复制
find . -type f -print | xargs grep "example"

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

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

代码语言:javascript
复制
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字符结尾的所有文件:

代码语言:javascript
复制
find . -name "*.bak" -delete

总结

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


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

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

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

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 按名称或扩展名查找Linux文件
  • 常见的Linux查找命令和语法
    • 基本示例
    • 查找选项和优化
    • 按修改时间查找文件
    • 使用Grep根据内容查找文件
    • 如何使用查找命令查找和处理文件
    • 如何在Linux命令行查找和删除文件
    • 总结
    相关产品与服务
    云开发 CloudBase
    云开发(Tencent CloudBase,TCB)是腾讯云提供的云原生一体化开发环境和工具平台,为200万+企业和开发者提供高可用、自动弹性扩缩的后端云服务,可用于云端一体化开发多种端应用(小程序、公众号、Web 应用等),避免了应用开发过程中繁琐的服务器搭建及运维,开发者可以专注于业务逻辑的实现,开发门槛更低,效率更高。
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档