在Linux系统中使用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:文件名和文件类型
-O2
在find
运行要求更高的过滤器之前,可以按文件名和文件类型进行过滤。
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 命令搜索时,不要指定过大的搜索范围。