首页 > 其他分享 >`find` 命令详解

`find` 命令详解

时间:2024-08-13 12:49:19浏览次数:7  
标签:文件 匹配 name 命令 查找 path find 详解

find 命令是 Unix 和类 Unix 系统(如 Linux)中的一个强大工具,用于在目录树中搜索文件和目录。它提供了多种选项来进行复杂的搜索,可以根据文件的名称、类型、时间、大小等条件筛选文件。以下是 find 命令的详细介绍,包括常用选项和示例。

基本语法

find [路径] [选项] [测试条件] [操作]
  • 路径: 指定要搜索的目录路径。可以是一个或多个路径,也可以是当前目录(.)。
  • 选项: 控制 find 命令的行为,如忽略错误、显示帮助信息等。
  • 测试条件: 用于匹配文件的条件,如文件名、类型、修改时间等。
  • 操作: 对匹配的文件执行的操作,如打印路径、删除文件等。

常用选项

  • -name: 根据文件名匹配文件。

    • 例子:find /path -name "*.txt" 查找 /path 目录下所有扩展名为 .txt 的文件。
  • -iname: 类似于 -name,但不区分大小写。

    • 例子:find /path -iname "*.jpg" 查找 /path 目录下所有扩展名为 .jpg(大小写不敏感)的文件。
  • -type: 根据文件类型匹配文件。

    • f:普通文件
    • d:目录
    • l:符号链接
    • 例子:find /path -type d 查找 /path 目录下所有目录。
  • -size: 根据文件大小匹配文件。

    • 例子:find /path -size +1M 查找 /path 目录下大于 1MB 的文件。
    • 可以使用 c(字节)、k(千字节)、M(兆字节)等单位。
  • -mtime: 根据文件最后修改时间匹配文件。

    • -mtime n:匹配修改时间为 n 天前的文件。
    • -mtime +n:匹配修改时间超过 n 天的文件。
    • -mtime -n:匹配过去 n 天内修改的文件。
    • 例子:find /path -mtime -7 查找过去 7 天内修改的文件。
  • -ctime: 根据文件元数据最后更改时间匹配文件。

    • 例子:find /path -ctime +30 查找在 30 天前更改过元数据的文件。
  • -atime: 根据文件最后访问时间匹配文件。

    • 例子:find /path -atime -1 查找过去 24 小时内被访问过的文件。
  • -mmin: 根据文件最后修改时间,以分钟为单位匹配文件。

    • 例子:find /path -mmin +60 查找超过 60 分钟前修改的文件。
  • -cmin: 根据文件元数据最后更改时间,以分钟为单位匹配文件。

    • 例子:find /path -cmin -30 查找过去 30 分钟内更改过元数据的文件。
  • -amin: 根据文件最后访问时间,以分钟为单位匹配文件。

    • 例子:find /path -amin +10 查找 10 分钟前访问过的文件。

操作

  • -print: 默认操作,打印匹配文件的路径。

    • 例子:find /path -name "*.log" -print 打印所有 .log 文件的路径。
  • -exec: 对匹配的文件执行命令。

    • 例子:find /path -name "*.tmp" -exec rm -f {} \; 删除所有 .tmp 文件。{} 代表当前匹配的文件,\; 结束命令。
  • -delete: 删除匹配的文件。注意: 使用时需要小心,因为文件会被永久删除。

    • 例子:find /path -name "*.bak" -delete 删除所有 .bak 文件。
  • -print0: 以 null 字符(\0)分隔路径,适用于包含空格或特殊字符的文件名。

    • 例子:find /path -type f -print0 | xargs -0 rm 删除所有匹配的文件。
  • -prune: 排除指定目录及其子目录的搜索。

    • 例子:find /path -type d -name "ignore" -prune -o -type f -print 查找 /path 目录下的所有文件,但排除名为 ignore 的目录及其子目录。

示例

  1. 查找当前目录下所有 .log 文件

    find . -name "*.log"
    
  2. 查找 /var/log 目录下大于 100MB 的文件

    find /var/log -size +100M
    
  3. 查找 7 天前修改过的文件,并删除它们

    find /path -mtime +7 -exec rm -f {} \;
    
  4. 查找过去 30 分钟内访问过的文件,并打印它们的路径

    find /path -amin -30 -print
    
  5. 查找并删除所有 .tmp 文件(慎用)

    find /path -name "*.tmp" -delete
    

总结

find 命令是一个功能强大的工具,用于在目录树中搜索和操作文件。通过掌握 find 的各种选项和操作,你可以高效地管理和处理系统中的文件。

标签:文件,匹配,name,命令,查找,path,find,详解
From: https://www.cnblogs.com/daikaiqiang/p/18356649

相关文章

  • Linux 命令行基本语法和获取帮助
    今天给伙伴们分享一下Linux命令行基本语法和获取帮助,希望看了有所收获。我是公众号「想吃西红柿」「云原生运维实战派」作者,对云原生运维感兴趣,也保持时刻学习,后续会分享工作中用到的运维技术,在运维的路上得到支持和共同进步!如果伙伴们看了文档觉得有用,欢迎大家关注我的......
  • 神经网络之卷积篇:详解Padding
    详解Padding为了构建深度神经网络,需要学会使用的一个基本的卷积操作就是padding,让来看看它是如何工作的。如果用一个3×3的过滤器卷积一个6×6的图像,最后会得到一个4×4的输出,也就是一个4×4矩阵。那是因为3×3过滤器在6×6矩阵中,只可能有4×4种可能的位置。这背后的数学解释是......
  • App.Config详解
    应用程序配置文件是标准的XML文件,XML标记和属性是区分大小写的。它是可以按需要更改的,开发人员可以使用配置文件来更改设置,而不必重编译应用程序。配置文件的根节点是configuration。我们经常访问的是appSettings,它是由.Net预定义配置节。我们经常使用的配置文件的架构是象下......
  • MySQL常用命令增删改查select,update,alter...
    MySQL常用命令增删改查select,update,alter…文章目录MySQL常用命令增删改查select,update,alter...MySQL修改用户密码MySQL删除用户命令MySQL修改用户密码查看MySQL的用户及hostselectuser,hostfrommysql.user;备注host分别代表的连接方式user@‘localh......
  • Redis流详解及Java实践
    Redis流详解及Java实践RedisStream概述基本概念使用场景RedisStream命令XADD-添加消息XRANGE-获取消息XREAD-读取消息XGROUP-操作消费者组XACK-确认消息代码示例实战案例示例1:日志收集系统生产者服务消费者服务示例2:消息队列生产者服务消费者服务示......
  • ntdsutil.exe 是一个用于管理和维护 Windows Server 中的 Active Directory 数据库的
     ntdsutil.exe是一个用于管理和维护WindowsServer中的ActiveDirectory数据库的命令行工具。它允许管理员执行多种任务,包括: 备份和还原ActiveDirectory数据库:你可以使用ntdsutil来创建数据库的备份、还原数据库以及检查和修复数据库的完整性。维护和修复Act......
  • 深入解析Node.js中的fs.watch:options与listener详解
    在Node.js中,fs.watch方法是一个功能强大的文件系统监控工具,它允许我们对文件或目录进行实时监控,并在文件或目录发生变化时触发相应的操作。在使用fs.watch时,两个关键的部分是options对象和listener回调函数。本文将详细讲解这两个部分,帮助读者更好地理解和使用fs.watch。一......
  • Redis命令之scan的用法和注意细节
    背景Redis提供了scan命令,用于增量迭代获取db里的key。命令格式:SCANcursor[MATCHpattern][COUNTcount]其中SCAN、MATCH、COUNT为命令关键字;cursor为游标,如果为0表示起始,每次执行命令会返回新的cursor,可用于下次命令的增量迭代;pattern为模式,即匹配规则,如Match*表示匹配所......
  • Linux系统中的管道命令、grep命令、sed命令和awk命令
    本章将和大家分享Linux系统中的管道命令、grep命令、sed命令和awk命令。废话不多说,下面我们直接进入主题。一、管道命令Linux中的管道命令(pipe)是一种非常强大的特性,它允许你将一个命令的输出作为另一个命令的输入。管道命令极大地增强了命令行的灵活性和功能,使得复杂的数据处理......
  • 用Python实现9大回归算法详解——01线形回归算法
    1.线性回归的基本概念线性回归是一种最基本的监督学习算法,用于预测因变量(目标变量)和一个或多个自变量(特征变量)之间的关系。线性回归假设因变量与自变量之间的关系是线性的,即可以用以下形式的线性方程来表示:其中: 是因变量(目标变量)。 是自变量(特征变量)。是截距项,表示当所......