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
:1024kG
: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 的文件,并删除它们。
参考
以上是关于Linux查找文件(locate | find)的主要内容,如果未能解决你的问题,请参考以下文章