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系统中搜索文件和目录

相关推荐
小此方2 分钟前
Re:Linux系统篇(五)指令篇 ·四:shell外壳程序及其工作原理
linux·运维·服务器
其实防守也摸鱼23 分钟前
sqlmap下载和安装保姆级教程(附安装包)
linux·运维·服务器·测试工具·渗透测试·攻防·护网行动
焦糖玛奇朵婷28 分钟前
解锁扭蛋机小程序的五大优势
java·大数据·服务器·前端·小程序
jingyu飞鸟1 小时前
Linux系统发送邮件,解决信誉等级低问题 docker compose修改启动一键使用
linux·运维·docker
Lumos_7771 小时前
Linux -- exec 进程替换
linux·运维·chrome
李白客1 小时前
国产数据库选型指南:从技术路线到实战要点
运维·数据库·数据库架构·迁移学习
数智化精益手记局1 小时前
人员排班管理软件的自动化功能解析:解决传统手工人员进行排班管理耗时长的难题
运维·数据结构·人工智能·信息可视化·自动化·制造·精益工程
jy41932171 小时前
VPS 网络质量怎么测?一篇讲清楚多节点 ping、tcping 和回程路由
运维
爱吃芹菜炒肉2 小时前
Chapter 16: Power Management
服务器·c语言·网络·tcp/ip·pcie
wicb91wJ62 小时前
Nginx反向代理与负载均衡配置详解
运维·nginx·负载均衡