Linux的find命令是按文件名查找文件的核心工具,通过-name参数区分大小写匹配文件名,-iname则忽略大小写,支持通配符:*匹配任意字符,?匹配单个字符,[ ]匹配指定范围(如file[1-3].txt),组合条件可用-o(或)、-a(与)连接,如查找.txt或.log文件用-o,结合-exec可对结果批量处理(如-exec rm {} \;删除文件),-ok则交互式确认,灵活运用这些参数,可高效定位目标文件。
在Linux系统中,文件查找是日常运维和开发中的高频操作,当我们知道文件名但不确定文件具体存放位置时,find命令是最常用、最强大的工具之一,本文将详细介绍如何使用find命令按文件名查找文件,从基础语法到高级用法,帮助您快速掌握这一技能。
find命令简介
find命令是Linux系统中用于文件查找的命令行工具,它可以根据文件名、文件类型、文件大小、修改时间等多种条件在指定目录及其子目录中递归查找文件,并支持对查找结果进行后续处理(如显示、删除、复制等),其基本语法结构为:
find [查找路径] [查找条件] [处理动作]
- 查找路径:指定开始查找的目录,默认为当前目录()。
- 查找条件:用于筛选文件的条件,如按文件名、类型、大小等。
- 处理动作:对查找结果的操作,默认为
-print(即打印文件路径)。
按文件名查找的核心选项:-name
按文件名查找是find命令最常用的功能,主要通过-name选项实现。-name支持使用通配符进行模式匹配,匹配时区分大小写。

基本语法
find [路径] -name "文件名模式"
- 文件名模式:可包含通配符(匹配任意长度字符)、(匹配单个字符)、
[](匹配指定范围内的单个字符,如[a-z]匹配小写字母)。
常用示例
(1)查找固定文件名的文件
在当前目录及其子目录中查找名为test.txt的文件:
find . -name "test.txt"
输出示例:
./test.txt
./subdir/test.txt
(2)使用通配符匹配多个文件
- 查找所有以
.log结尾的文件:find /var/log -name "*.log"
- 查找文件名以
test开头,后跟任意单个字符的文件(如test1、testa等):find . -name "test?"
- 查找文件名包含数字
1到3的文件(如file1.txt、data2.csv、test3.log):find . -name "*[1-3]*"
忽略大小写的文件名查找:-iname
如果不确定文件名的大小写(如可能为README、readme或ReadMe),可以使用-iname选项,它和-name功能类似,但不区分大小写。
示例
在/home目录中查找所有名为config(不区分大小写)的文件:
find /home -iname "config"
输出可能包含:
/home/user1/Config
/home/user2/config
/home/user3/CONFIG
使用正则表达式匹配文件名:-regex
当需要更复杂的文件名匹配规则时,可以使用-regex选项,它支持基于正则表达式的模式匹配(需匹配完整路径,而不仅是文件名),正则表达式元字符包括:
^:匹配字符串开头- 匹配字符串结尾
- 匹配任意单个字符
- 匹配前一个字符0次或多次
- 匹配前一个字符1次或多次
- 匹配前一个字符0次或1次
[]:匹配指定范围内的字符
示例
- 查找
/tmp目录下所有以tmp开头、后跟数字且扩展名为.txt的文件(如tmp1.txt、tmp123.txt):find /tmp -regex "^tmp[0-9]*\.txt$"
- 查找文件名包含
test且以.log或.txt结尾的文件:find . -regex ".*test\.(log|txt)$"
文章版权声明:除非注明,否则均为xmsdn原创文章,转载或复制请以超链接形式并注明出处。

