查找文件通常使用两个命令:locate
和 find
。
locate
命令
$ locate 关键词
locate
命令后跟一个关键词,只要路径中包含此关键词的文件都会被查出来(模糊查询)。
locate
命令实际上只是在 /var/lib/mlocate/mlocate.db
这个数据库中查(这个数据库记录了整个系统上所有文件和目录的路径信息),所以速度很快。但有些新产生的文件可能查不到,因为这个数据库默认每天才更新一次。系统管理员可以使用 updatedb
命令手动更新该数据库。
find
命令
find
命令是 Linux 上的主要查找命令,功能比 locate
强大的多。它直接在硬盘上查找文件,所以精度高,但速度慢。
基本用法:
$ find 要查找的目录 查找条件1 查找条件2 ...
常用查找条件:
-name filename # 指定文件或目录名。注意:find 是精确查询,如果要模糊查询,可以使用通配符。
-type 文件类型 # 指定文件类型
-size 10b/c/k/M/G # 指定文件大小。b 即 block,通常等于 512 字节。c 指字节
-user 用户名 # 指定用户名
-group 组名 # 指定组
-perm 644 # 查找权限是 644 的文件和目录
-perm -644 # 查找权限比 644 更充足的文件或目录
-perm -u=s # 查找文件拥有者对文件有 SUID 权限的文件
-mtime -3 # 查找从现在开始计算,3天内内容发生过改动的文件
-mtime +3 # 查找从现在开始计算,比3天更久的时间内内容发生过改动的文件
-mtime 3 # 查找从现在开始计算,三天前那一天的内容发生过改动的文件
-mmin
用法和含义与-mtime
相似,只是将 “天” 换成 “分钟”。-atime
和-amin
用法也相似,只是将 “内容发生过改动” 换成 “文件被读取/执行过”。-ctime
和-cmin
用法也相似,只是将 “内容发生过改动” 换成 “文件属性被修改过”。