【Linux】查找文件(locate | find)

摘要

本文将介绍如何在 Linux 中查找文件。

引言

Linux 中常用的查找文件的命令有 2 个:

  • locate:查找较快,但功能稍弱
  • find:功能强大,但查找稍慢

用法

locate

locate [查找的路径] [文件名的关键字]

  • locate .tar:在整个系统中查看名字包括 .tar 的文件

locate 速度快是因为 Linux 将系统中的所有文件名都记录在一个名为 /var/lib/mlocate 数据库中,当使用 locate 查找文件时,会从数据库中查找,而不是真的遍历硬盘来查找。

但 locate 查找文件时有一个重大限制,有时候会找到已经被删除的数据,或者刚创建的文件无法查找到,这是由于记录文件名的数据库不实时更新造成的,这个数据库默认情况下每天更新一次,当然我们可以通过 updatedb 命令来更新,但如果系统存储文件较多,更新操作将会花费一定的时间,更新后暂时不会出现上述问题了。

find

find [查找范围] [查找条件] [动作]

根据文件名查找

  • find / -name passwd:在整个系统中查找文件名为 passwd 的文件
  • find / -name passwd*:在整个系统中查找文件名为以 passwd 打头的文件

根据文件类型查找

  • find /bin -type l:在 /bin 目录下查找文件类型为 l 的文件(文件类型请参考这里

根据时间查找

  • find /tmp -mtime -3 -ls:在 /tmp 目录下查找 3 天之内内容发生过改变的文件。
  • find /tmp -mtime +7 -ls:在 /tmp 目录下查找 7 天之前内容发生过改变的文件。
  • find /tmp -mtime 4 -ls:在 /tmp 目录下查找 4 天前的那天内容发生过改变的文件。
  • find /tmp -mmin +7 -ls:在 /tmp 目录下查找 7 分钟之前内容发生过改变的文件。

find 命令常用的时间参数有:

  • -amin-atime:文件被读取/执行时间(前者单位是分钟,后者是天)
  • -cmin-ctime:文件属性修改时间(前者单位是分钟,后者是天)
  • -mmin-mtime:文件修改时间(前者单位是分钟,后者是天)

根据文件大小查找

  • find /tmp -size -3k -ls:在 /tmp 目录下查找比 3k 字节小的的文件。
  • find /tmp -size +100c -ls:在 /tmp 目录下查找比 100 字节大的的文件。
  • find /tmp -size 10M -ls:在 /tmp 目录下查找大小正好是 10M 字节的文件。

find -size 选项中常用的大小单位有:

  • c:字节
  • k:1024 字节
  • M:1024k
  • G:1024M

根据拥有者或从属组查找

  • find /tmp -user root -ls:在 /tmp 目录下查找拥有者是 root 用户的文件。
  • find /tmp -uid 500 -ls:在 /tmp 目录下查找拥有者的 uid 是 500 的文件。
  • find /tmp -group stu -ls:在 /tmp 目录下查找从属 stu 用户组的文件。
  • find /tmp -gid 0 -ls:在 /tmp 目录下查找从属 gid 为 0 的用户组的文件。

根据文件权限查找

  • find /tmp -perm 754 -ls:在 /tmp 目录下查找文件权限为 754 的文件。(文件权限请参考这里

联合条件查找

  • -a:与
  • -o:或
  • !:非

例如:

  • find /tmp \( -size +1k -a -size -10M -a -mmin -30 -a -type f \) -ls:查找 /tmp 目录下大于 1k 小于 10M,在 30 分钟内文件内容被修改过的普通文件。

查找并执行动作

-find /tmp \( -size +1k -a -size -10M \) -exec rm -rf {} \;:查找 /tmp 目录下大于 1k 小于 10M 的文件,并删除它们。

参考

中国大学 MOOC | Linux系统管理 | 主题04 | 小节 4 | 查找文件

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Xavier Jiezou

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

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

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

打赏作者

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

抵扣说明:

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

余额充值