当前位置: 首页 > article >正文

Linux 查找工具 - find 命令介绍

find 是 Linux 中一个非常强大的命令,用于在文件系统中查找符合特定条件的文件或目录。它的功能非常强大,支持根据文件名、文件类型、修改时间、文件权限、大小等多种条件进行查找,还可以结合其他命令进行更复杂的操作。

find 命令的基本语法:

find <path> <options> <expression>
  • <path>: 查找的起始路径。如果你想从根目录开始查找,可以使用 /,也可以指定某个具体的目录路径。
  • <options>: 查找时的选项,通常与查找行为有关,如是否递归、是否忽略某些文件系统等。
  • <expression>: 查找的条件,可以是文件名、文件类型、修改时间等。

常用选项和表达式:

1. 查找指定目录下的文件

查找 /home/user/ 目录下所有的文件和目录。

find /home/user/
2. 查找指定名称的文件

使用 -name 选项查找符合某个文件名模式的文件:

find /home/user/ -name "file.txt"
  • -name 支持通配符,比如:
    • 查找以 .txt 结尾的文件:
      find /home/user/ -name "*.txt"
      
    • 查找以大写 README 开头的文件:
      find /home/user/ -name "README*"
      
3. 查找指定类型的文件

使用 -type 选项来指定文件类型。

  • 查找普通文件(默认):
    find /home/user/ -type f
    
  • 查找目录:
    find /home/user/ -type d
    
  • 查找符号链接:
    find /home/user/ -type l
    
4. 查找指定大小的文件
  • 查找大于 1GB 的文件:
    find /home/user/ -size +1G
    
  • 查找小于 100KB 的文件:
    find /home/user/ -size -100k
    
5. 查找修改时间符合条件的文件
  • 查找 7 天内修改过的文件:
    find /home/user/ -mtime -7
    
  • 查找 30 天前修改过的文件:
    find /home/user/ -mtime +30
    
  • -atime 用于访问时间,-ctime 用于状态改变时间。
6. 查找文件并执行命令

find 命令可以与 -exec 选项一起使用,执行匹配的文件上指定的命令。

  • 删除找到的所有 .log 文件:
    find /home/user/ -name "*.log" -exec rm -f {} \;
    
    其中 {} 是匹配的文件的占位符,\; 用于结束命令。
7. 查找指定权限的文件
  • 查找权限为 755 的文件:
    find /home/user/ -perm 755
    
  • 查找所有可执行的文件(如 -perm -u+x 查找用户可执行的文件):
    find /home/user/ -perm -u+x
    
8. 查找指定用户或组拥有的文件
  • 查找由 user 用户拥有的文件:
    find /home/user/ -user user
    
  • 查找属于 group 组的文件:
    find /home/user/ -group group
    
9. 查找并输出文件信息

使用 -ls 选项可以查看与每个文件相关的详细信息:

find /home/user/ -name "*.txt" -ls
10. 查找多个条件符合的文件

可以通过逻辑操作符来组合多个查找条件。

  • -and-a:与运算(默认情况下)。
    查找 .txt 文件且文件大小大于 1MB:

    find /home/user/ -name "*.txt" -size +1M
    
  • -or-o:或运算。
    查找 .txt 文件或者 .pdf 文件:

    find /home/user/ \( -name "*.txt" -o -name "*.pdf" \)
    

    注意:在使用 -or 时,括号 () 必须加上转义符 \,否则会被 shell 解释。

  • -not!:非运算。
    查找非 .txt 的文件:

    find /home/user/ -not -name "*.txt"
    
11. 查找空文件

查找大小为 0 字节的文件(即空文件):

find /home/user/ -size 0

示例:

  1. 查找 /var/log/ 目录下所有的 .log 文件,并删除它们:
    find /var/log/ -name "*.log" -exec rm -f {} \;
    
  2. 查找当前目录下最近 10 分钟内修改过的文件:
    find . -mmin -10
    
  3. 查找文件名包含 backup 且文件大小大于 100MB 的文件:
    find /home/user/ -name "*backup*" -size +100M
    

小贴士:

  • find 可以通过管道(pipe)与其他命令组合使用,如 grep,进一步过滤结果。
  • 使用 -prune 选项可以让 find 在某些目录中停止进一步查找,例如排除某个目录:
    find /home/user/ -path "/home/user/ignore" -prune -o -name "*.txt" -print
    

find 是 Linux 系统中必备的查找工具,学习并掌握它能够大大提高日常操作的效率。


http://www.kler.cn/a/472203.html

相关文章:

  • Backend - C# 操作数据库 DB(ADO.NET、LINQ to SQL、EF)
  • MyBatis SQL 映射文件基础
  • Jupyter Notebook 取消数据框(DataFrame)缩略显示
  • 02、Docker学习,理论知识,第二天:基础概念与常用命令
  • 基于Elasticsearch8的向量检索实现相似图形搜索
  • cesium入门学习五(2025年版本)-------------cesium加载离线地图
  • 【手写数据库内核miniToadb】第1天 模拟数据库流程,剖析数据库内核的组成结构
  • JavaScript系列(9)-- Set数据结构专题
  • 鸿蒙中使用获取本地JSON文件
  • 牛客网刷题 ——C语言初阶(2分支和循环-for)——打印菱形
  • SpringBoot3集成案例
  • Flannel:Kubernetes 网络方案的“轻骑兵”
  • Burpsuite20241102macM1版安装
  • 三甲医院等级评审八维数据分析应用(一)--组织、制度、管理可视化篇
  • iOS - 消息机制
  • 数据结构(查找算法)
  • 深度学习中CUDA环境安装教程
  • 前端(API)学习笔记(CLASS 3):Dom事件进阶
  • Java-ClassPathResource读取包含JSON数据的txt文件
  • Linux操作系统——多线程互斥