Linux find命令的高级用法和多级目录查找实战

 更新时间:2025年12月16日 09:26:13   作者:weixin_46244623  
在日常 Linux 开发和运维中,find 是一个非常强大的文件搜索工具,除了简单的按文件名查找,它还能按目录、大小、时间、权限,甚至执行批量操作,本文结合实际案例,带你全面掌握 find 的高级用法

在日常 Linux 开发和运维中,find 是一个非常强大的文件搜索工具。除了简单的按文件名查找,它还能按目录、大小、时间、权限,甚至执行批量操作,非常适合多层级目录的管理。本文结合实际案例,带你全面掌握 find 的高级用法。

一、find基本语法

find [起始路径] [查找条件] [操作]

  • 起始路径:要搜索的目录,如果用 . 表示当前目录。
  • 查找条件:文件名、类型、大小、修改时间等。
  • 操作:可以执行命令,例如 -exec-delete

二、按类型查找

# 查找所有目录
find /path/to/search -type d

# 查找所有普通文件
find /path/to/search -type f

# 查找符号链接
find /path/to/search -type l

三、按名称查找

# 精确匹配
find . -name "test.txt"

# 忽略大小写
find . -iname "test.txt"

# 通配符匹配
find . -name "*.log"

四、按大小和时间查找

# 大于 100MB 的文件
find . -type f -size +100M

# 最近 7 天修改过的文件
find . -type f -mtime -7

# 最近 1 小时修改的文件
find . -type f -mmin -60

五、结合逻辑操作符

# 查找所有 .txt 或 .log 文件
find . \( -name "*.txt" -o -name "*.log" \)

# 查找 .txt 文件且大小 > 1M
find . -name "*.txt" -a -size +1M

逻辑操作符:

  • -a / -and:并且(默认)
  • -o / -or:或者
  • ! / -not:非

六、执行操作

# 删除找到的临时文件
find . -name "*.tmp" -type f -delete

# 压缩所有 js 文件
find . -name "*.js" -type f -exec gzip {} +

# 使用 + 批量执行,提高效率
find . -name "*.log" -type f -exec gzip {} +

七、查找空文件或空目录

# 空文件
find . -type f -empty

# 空目录
find . -type d -empty

八、按权限或拥有者查找

# 权限为 755 的文件
find . -type f -perm 755

# 拥有者为 user 的文件
find . -user user

# 属组为 group 的文件
find . -group group

九、限制查找深度

# 最多查找两级目录
find . -maxdepth 2 -type f

# 从第三级目录开始查找
find . -mindepth 3 -type f

十、多级目录查找示例

假设你要查找路径 ./coze-studio/frontend/packages/common 下的文件或目录:

# 查找所有文件
find ./coze-studio/frontend/packages/common -type f

# 查找所有目录
find ./coze-studio/frontend/packages/common -type d

# 查找该路径下所有 js 文件
find ./coze-studio/frontend/packages/common -type f -name "*.js"

# 限制查找深度,只查当前目录
find ./coze-studio/frontend/packages/common -maxdepth 1 -type f

十一、查找指定多级路径

如果你想查找完整路径,例如:

coze-arch/coze-design/icons

直接用 -name 是找不到的,应该用 -path

# 精确匹配多级路径目录
find / -type d -path "*/coze-arch/coze-design/icons"

# 忽略大小写匹配
find / -type d -ipath "*/coze-arch/coze-design/icons"

# 查找该目录下的 svg 文件
find / -type f -path "*/coze-arch/coze-design/icons/*.svg"

注意:

  • * 表示路径前缀任意层级
  • -path 匹配整个路径
  • -ipath 忽略大小写匹配

十二、高级示例汇总

# 查找大于 100MB 且最近 7 天修改的日志文件并压缩
find /var/log -type f -name "*.log" -size +100M -mtime -7 -exec gzip {} +

# 删除 ./coze-studio/frontend/packages/common 下所有临时文件
find ./coze-studio/frontend/packages/common -type f -name "*.tmp" -delete

# 查找指定多级目录并查看详细信息
find / -type d -path "*/coze-arch/coze-design/icons" -exec ls -lh {} \;

总结

  • -name:匹配单个文件或目录名
  • -path / -ipath:匹配完整路径,支持多级目录
  • -type:限制类型(文件、目录、符号链接等)
  • -size / -mtime / -mmin:按大小或修改时间筛选
  • -exec / -delete:批量操作
  • -maxdepth / -mindepth:控制递归深度
  • 逻辑操作符 -a / -o / !:复杂条件组合

通过这些组合,可以非常灵活地管理和查找 Linux 系统中的文件和目录,尤其是在多级路径和大型项目中。

到此这篇关于Linux find命令的高级用法和多级目录查找实战的文章就介绍到这了,更多相关Linux find命令内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Linux系统如何修改主机名称

    Linux系统如何修改主机名称

    Linux系统中修改主机名称可以临时或永久进行,临时修改仅在当前会话有效,永久修改则需编辑系统配置文件,使用systemd的系统可通过hostnamectl命令更新主机名,同时更新/etc/hosts文件确保一致性
    2024-11-11
  • linux下挂载VHD等虚拟磁盘文件的方法

    linux下挂载VHD等虚拟磁盘文件的方法

    本篇文章主要介绍了linux下挂载VHD等虚拟磁盘文件的方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-04-04
  • 浅谈在linux kernel中打印函数调用的堆栈的方法

    浅谈在linux kernel中打印函数调用的堆栈的方法

    下面小编就为大家带来一篇浅谈在linux kernel中打印函数调用的堆栈的方法。小编觉得挺不错的。现在就分享给大家。也给大家做个参考。一起跟随小编过来看看吧
    2016-12-12
  • linux的sftp复制传输文件方式

    linux的sftp复制传输文件方式

    这篇文章主要介绍了linux的sftp复制传输文件方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-06-06
  • Linux网桥配置br-lan、eth0、eth1、ra0、rai0方式

    Linux网桥配置br-lan、eth0、eth1、ra0、rai0方式

    这篇文章主要介绍了Linux网桥配置br-lan、eth0、eth1、ra0、rai0方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-05-05
  • Linux traceroute命令使用详解

    Linux traceroute命令使用详解

    这篇文章主要介绍了Linux traceroute命令使用详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-12-12
  • CentOS7中防火墙的一些常用配置介绍

    CentOS7中防火墙的一些常用配置介绍

    centos 7中防火墙是一个非常的强大的功能了。这篇文章主要介绍了CentOS7中防火墙的一些常用配置,需要的朋友可以参考下
    2016-12-12
  • Linux drm_syncobj机制原理与应用方式

    Linux drm_syncobj机制原理与应用方式

    DRM_syncobj是Linux内核中用于GPU同步的抽象,支持二元与时间线语义,提供高效用户接口,实现跨进程/驱动同步,满足现代图形API如Vulkan的复杂需求
    2025-09-09
  • Linux Windows下设置定时执行任务的方法

    Linux Windows下设置定时执行任务的方法

    这篇文章主要介绍了Linux、windows下 设置定时执行任务的方法,本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-09-09
  • Linux磁盘挂载、分区、扩容操作的实现方法

    Linux磁盘挂载、分区、扩容操作的实现方法

    这篇文章主要介绍了Linux磁盘挂载、分区、扩容操作的实现方法,详细的介绍了这些基础概念及其实现,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-12-12

最新评论