Linux find命令教程:如何使用查找文件及目录(附实例教程和注意事项)

Linux find命令介绍

Linux find命令是Linux系统管理员工具箱中最强大的工具之一。它根据用户给定的表达式在目录层次结构中搜索文件和目录,并可以对每个匹配的文件执行用户指定的操作。你可以使用find命令根据它们的权限、类型、日期、所有权、大小等搜索文件和目录。它还可以与其他工具如grep或sed结合使用。

Linux find命令适用的Linux版本

find命令在所有主流的Linux发行版中都是可用的,包括但不限于Ubuntu, Debian, Fedora, CentOS, RHEL, SUSE等。在大多数发行版中,find命令是预装的,所以你不需要安装任何额外的包。如果你发现你的系统中没有find命令,你可以使用你的包管理器来安装它。在基于Debian的系统中,你可以使用apt-get,在基于RHEL的系统中,你可以使用yum或dnf。

bash 复制代码
[linux@bashcommandnotfound.cn ~]$ sudo apt-get install findutils  # Debian-based systems
[linux@bashcommandnotfound.cn ~]$ sudo yum install findutils     # RHEL 7 and below
[linux@bashcommandnotfound.cn ~]$ sudo dnf install findutils     # RHEL 8 and above

Linux find命令的基本语法

find命令的基本语法如下:

bash 复制代码
find [path] [expression]

其中,path表示要搜索的路径,expression表示要搜索的条件(如文件名、大小等)。

Linux find命令的常用选项说明

find命令有很多选项,下面列出了其中最常用的20个选项:

选项 描述
-name 按照文件名搜索
-type 按照文件类型搜索
-size 按照文件大小搜索
-mtime 按照文件修改时间搜索
-exec 对搜索结果执行指定命令
-maxdepth 设置搜索深度
-mindepth 设置搜索深度
-user 按照文件所有者搜索
-group 按照文件所属组搜索
-perm 按照文件权限搜索
-print 将搜索结果输出到标准输出
-delete 删除搜索结果
-ok 和-exec类似,但需要确认
-iname 按照文件名搜索(不区分大小写)
-printf 按照指定格式输出搜索结果
-regex 按照正则表达式搜索
-newer 按照文件修改时间搜索
-depth 从深度优先搜索改为广度优先搜索
-mount 只搜索当前挂载的文件系统
-xdev 同-mound选项

Linux find命令的实例

实例1:按照文件名搜索

复制代码
# 查找当前目录下所有以.txt结尾的文件
find . -name "*.txt"

实例2:按照文件类型搜索

复制代码
# 查找当前目录下所有普通文件(排除目录和符号链接)
find . -type f

实例3:按照文件大小搜索

复制代码
# 查找当前目录下所有大于1M的文件
find . -size +1M

实例4:按照文件修改时间搜索

复制代码
# 查找当前目录下所有最近7天内修改过的文件
find . -mtime -7

实例5:对搜索结果执行指定命令

复制代码
# 将当前目录下所有以.txt结尾的文件复制到/tmp目录下
find . -name "*.txt" -exec cp {} /tmp \;

实例6:删除搜索结果

复制代码
# 删除当前目录下所有以.txt结尾的文件
find . -name "*.txt" -delete

实例7:按照指定格式输出搜索结果

复制代码
# 输出当前目录下所有文件的路径和大小
find . -printf "%p - %s\n"

实例8:按照正则表达式搜索

复制代码
# 查找当前目录下所有以a开头、b结尾的文件
find . -regex "./a.*b$"

实例9:按照文件修改时间搜索

复制代码
# 查找当前目录下所有最近7天内修改过的文件
find . -newermt "7 days ago"

Linux find命令的注意事项

  • 执行find命令时,请确保当前用户对要搜索的目录有足够的权限,否则可能会搜索不到文件。

  • 如果搜索结果包含了特殊字符(如空格、引号等),需要用引号将搜索条件括起来,或者使用转义符号。

  • 如果搜索结果较多,可以使用管道符号(|)将其传递给其他命令进行处理。

  • 如果出现bash: find: command not found的错误提示,说明系统中没有安装find命令,可以通过使用以下命令安装:

    CentOS/RHEL系统

    sudo yum install findutils

    Ubuntu/Debian系统

    sudo apt-get install findutils

更多详解可以参考:
Linux find命令教程(用法详解):如何在Linux系统中搜索文件和目录

相关推荐
吕了了37 分钟前
85 微PE吕了了修改版--更新!
运维·windows·电脑·系统
德生coding1 小时前
wifi驱动编译出来的驱动文件怎么做strip
linux
鹿鸣天涯1 小时前
Kali Linux 2025.4 发布:桌面环境增强,新增 3 款安全工具
linux·运维·安全
峥嵘life2 小时前
Android16 EDLA 认证测试CTS问题分析解决
android·java·服务器
学习&笔记2 小时前
MTK(系统篇)user版本无法使用setenforce 0命令关闭selinux权限
linux·运维·服务器
Bdygsl2 小时前
Linux(8)—— 进程优先级与环境变量
linux·运维·服务器
another heaven2 小时前
【软考 磁盘磁道访问时间】总容量等相关案例题型
linux·网络·算法·磁盘·磁道
吕了了2 小时前
87 Windows 系统安装的本质是什么?
运维·windows·电脑·系统
阿里巴巴P8资深技术专家3 小时前
docker容器启动报错
运维·docker·容器
杨云龙UP3 小时前
MySQL 8.0.x InnoDB 写入链路优化:Redo Log 与 Buffer Pool 扩容与缓冲区调优实战记录-20251029
linux·运维·数据库·sql·mysql