Linux查找文件(locate | find)

Posted Xavier Jiezou

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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 | 查找文件

以上是关于Linux查找文件(locate | find)的主要内容,如果未能解决你的问题,请参考以下文章

Linux查找文件(locate | find)

linux的查找命令 find whereis locate

linux文件查找(find,locate)

linux 文件查找 (locate 与 find)

Linux文件查找find和locate

Linux相识相知文件查找(locate/find)