linux:find用法详解


描述

find 命令是 Linux 和类 Unix 系统中非常强大的文件查找工具。它允许用户基于多种标准来定位文件和目录。

语法

find [起点目录] [表达式]

参数

(1)起点目录:指定从哪个目录开始搜索。
(2)表达式:可以包含多个条件,用来限定要查找的文件。

表达式类型:
(1)文件属性

  • -name:根据文件名匹配。
  • -iname:不区分大小写的文件名匹配。
  • -type:指定文件类型(d: 目录, f: 普通文件, l: 符号链接等)。
  • -mtime:文件最后修改时间(天数)。
  • -atime:文件最后访问时间(天数)。
  • -ctime:文件状态改变时间(天数)。
  • -size:文件大小(单位可选:b, c, w, k, M, G)。
  • -user:文件所有者用户名。
  • -group:文件所属组名。

(2)逻辑操作符

  • -and:与操作。
  • -or:或操作。
  • -not:非操作。

(3)执行动作

  • -print:打印文件路径(默认行为)。
  • -exec:对找到的文件执行命令。
  • -ok:类似于 -exec,但在执行前询问确认。

例子

  1. 查找当前目录下所有的 .txt 文件:
find . -name "*.txt"
  1. 查找 /etc 目录下所有以 conf 结尾的文件,并忽略大小写:
find /etc -iname "*conf"
  1. 查找 /var/log 下所有普通文件,其大小大于 1MB:
find /var/log -type f -size +1M
  1. 查找 /home 目录下最后修改时间在 7 天之前的文件:
find /home -type f -mtime +7
  1. 查找 /usr/bin 中所有由用户 root 拥有的文件:
find /usr/bin -user root
  1. 使用 -exec 对每个找到的文件执行命令,例如删除所有 .bak 文件:
find . -name "*.bak" -exec rm {} \;
  1. 使用 -ok 来安全地删除文件,每次删除前询问用户:
find . -name "*.bak" -ok rm {} \;
  1. 注意事项
  • 当使用 -exec-ok 时,通常需要在命令的末尾加上 \; 来结束表达式。
  • 如果 -exec 后面的命令接受多个参数,则可能会遇到问题,此时可以考虑使用 xargs
find . -name "*.bak" -print0 | xargs -0 rm
  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
find命令是Linux系统中一个非常强大的用于查找文件和目录的工具。下面是find命令的用法详解。 1. 基本语法: find [path] [expression] - path:指定需要查找的路径,默认为当前目录。 - expression:指定查找时的条件和操作。 2. 表达式: - -name:按照文件名进行匹配,可以使用通配符。 - -type:按照文件类型进行匹配,常见的类型有f(普通文件)、d(目录)、l(符号链接)等。 - -size:按照文件大小进行匹配,可以使用+(大于)、-(小于)和c(字节)、k(千字节)、M(兆字节)等单位。 - -mtime:按照文件的修改时间进行匹配,可以使用+(大于)、-(小于)和n(n天前)等。 - -user:按照文件所属用户进行匹配。 - -group:按照文件所属组进行匹配。 3. 操作: - -print:将匹配的文件或目录显示在标准输出中。 - -exec:对匹配的文件或目录执行后面指定的命令。 - -delete:删除匹配的文件或目录。 4. 常用示例: - 查找当前目录下所有以.txt结尾的文件:find . -name "*.txt" - 查找当前目录下所有大小超过1MB的文件:find . -size +1M - 查找当前目录下所有修改时间在3天以内的文件:find . -mtime -3 - 查找当前目录下所有属于root用户的文件:find . -user root - 查找当前目录下所有属于root组的目录:find . -group root - 找到匹配的文件后打印其路径:find . -name "*.txt" -print 总结:find命令可以根据文件名、类型、大小、修改时间、用户和组等条件来查找文件和目录,并根据需要执行特定的操作。它的灵活性和强大功能使得它成为Linux系统中一个非常重要和实用的命令。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

SmallerFL

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值