分享最新优惠信息
购买主机更加划算

汇总整理Linux系统使用find命令查找文件

在Linux系统中使用find命令很容易从命令行搜索文件,find命令使用简单的条件机制来过滤对象。本文简单介绍如何使用find命令查找文件。

find命令

Linux查找命令

find命令用于根据用户指定的条件在Linux中查找文件,该命令的基本语法如下:

find -options /path expression

查找命令属性

  • -options: 选项或搜索参数可以控制find进程的行为和优化方法。
  • /path:定义了find命令将开始过滤的顶级目录。
  • expression:定义了为创建输出而执行的操作。

查找命令选项

在Linux系统中按名称查找文件

要在目录和所有子目录中按名称查找文件,请在命令行中键入以下命令:

find /path -name filename

按扩展名定位文件

要在目录和所有子目录中按扩展名查找文件,请在命令行中键入以下命令:

find /path -name *.html

在当前目录中查找文件

要在当前目录中查找文件,请在命令行中键入以下命令:

find . -name filename.html

定位一段时间内修改的文件

要查找在前一周更改过的文件,请在命令行中键入以下命令:

find /path -mtime 7 “.html”

查找特定用户在一段时间内修改的文件

要查找特定用户在上周已更改的文件,请在命令行中键入以下命令:

find /path -user username -mtime 7 “.html”

将搜索限制为特定数量的子目录

要将搜索限制为最大数量的子目录,请在命令中添加-maxdepth X选项:

find -maxdepth 3 /path -name *.html

忽略文本大小写

要进行不区分大小写的搜索,请将-iname选项添加到命令中:

find /path -iname *.html

搜索文件

对于专门搜索文件,将-type f选项添加到命令中:

find /path -type f -name “*.html”

搜索目录

对于专门搜索目录,将-type d选项添加到命令中:

find /path -type d -name “*.html”

跟踪并显示符号链接

由于find命令默认忽略符号链接,因此将-L选项添加到命令以跟随并显示它们:

find -L /path -name *.html

按文件大小定位文件

要在目录和所有子目录中查找大于500MB的文件,请在命令行中键入以下命令:

find /path -size +500M

结合两个条件或过滤器

例如,要过滤目录和所有子目录中500MB到1GB的文件,请在命令行中键入以下命令:

find /path -size +500M -and -size -1G

按至少一个指定条件过滤

例如,要通过目录和所有子目录中的指定扩展名之一过滤文件,请在命令行中键入以下命令:

find /path -name *.docx -or -name *.odt

排除第二个条件

例如,要从目录和所有子目录中的搜索中排除扩展名,请在命令行中键入以下命令:

find /path -name *.docx -not -name *.odt
选项或搜索参数 用法
-name 按名称过滤文件
-iname 按名称进行不区分大小写的搜索以查找文件
. 在当前目录中搜索
-type 按文件类型过滤文件
-user 按用户过滤文件
-mtime 过滤文件限制其修改的时间段
-maxdepth 将搜索限制在给定数量的子目录中
-L 在搜索中包括符号链接
-size 按文件大小过滤
-and 置于两个条件之间,表示有必要同时包含这两个条件
-or 置于两个条件之间,表示需要至少按其中一个条件进行过滤
-not 置于两个条件之间,表示有必要忽略第二个条件

查找命令优化

使用Linux find命令时增强过滤的优化分为三个阶段。

-O1:默认

-O1是标准设置,它可以在find运行任何其他测试之前按文件名开始过滤。

find -O1 /path -name "*.html"

-O2:文件名和文件类型

-O2find运行要求更高的过滤器之前,可以按文件名和文件类型进行过滤。

find -O3 /path -name "*.html"

-O3:效率和成功的可能性

O3能够自动重新排序过滤器,以优先考虑效率和成功的可能性。

find -O3 /path -name "*.html"

基于内容的搜索:Find + Grep

Linux 命令仅根据find文件名和元数据过滤文件。因此,为了根据文件内容搜索文件,需要grep在命令行中添加命令:

find /path -type f -exec grep “content” ‘{}’ \; -print
  • -exec:它是一个命令,它使find命令能够对每个匹配的文件执行一次给定任务。
  • ‘{}’: 花括号是匹配结果的占位符。
  • \;: -exec选项由转义符和分号关闭,以避免它可以被shell解释。
  • -print:将结果输出在屏幕上。

总结

以上就是Linux系统使用find命令查找文件常用方法整理,查找过程仅供参考。

据了解,find是Linux 中强大的搜索命令,不仅可以按照文件名搜索文件,还可以按照权限、大小、时间、inode号等来搜索文件。

需要注意的是,find命令是直接在硬盘中进行搜索的,如果指定的搜索范围过大,那么find命令就会消耗较大的系统资源,从而导致服务器压力过大。因此在使用 find 命令搜索时,不要指定过大的搜索范围。

未经允许不得转载:惠主机 » 汇总整理Linux系统使用find命令查找文件