Linux基础之 文件查找

在工作生产环境中,定位、搜索、查找文件是经常用到的操作,本篇文章将对用到的相关命令进行介绍和说明。

which

查看可执行文件的位置。which 是通过PATH环境变量到该路径内查找可执行文件,所以基本的功能是寻找可执行文件

whereis

定位可执行文件、源代码文件、帮助文件在文件系统中的位置,而且只搜索二进制文件(参数-b)、man说明文件(参数-m)和源代码文件(参数-s),和locate命令一样,借助数据库进行查找,速度快,但有延迟性。

locate

依据名字查找文件或目录。locate命令要比find -name快得多,原因在于它不搜索具体目录,而是搜索一个数据库/var/lib/mlocate/mlocate.db。这个数据库中含有本地所有文件信息。Linux系统自动创建这个数据库,并且每天自动更新一次。因此,我们在用locate查找文件时,有时会找到已经被删除的数据;或者刚刚建立的文件,却无法查找到,原因就是因为数据库文件没有被更新。为了避免这种情况,可以在使用locate之前,先使用updatedb命令,手动更新数据库。整个locate工作其实是由4部分组成的:

  • /usr/bin/updatedb: 主要用来更新数据库

  • /usr/bin/locate: 二进制命令文件

  • /etc/updatedb.conf: updatedb的配置文件

  • /var/lib/mlocate/mlocate.db: 存放文件信息的数据库文件

locate命令支持通配符和正则表达式,常见选项和用法如下:

选项 功能
-b, --basename 只打印名称与PATTERNs匹配的文件
-c, --count 只打印匹配到的文件数目,而不是文件名本身
-e, --existing 只打印在调用locate时存在的文件
-i, --ignore-case 当进行文件模式匹配时,忽略大小写
-l, --limit, -n LIMIT 当成功匹配到LIMIT数量的文件时,退出
-r, --regexp REGEXP 查找一个基本的模式匹配REGEXP

find

find命令是最常用的文件搜索和查找命令,功能强大,选项众多,支持多种类别的查找

选项 功能
-name ’字串’ 查找文件名匹配所给字串的所有文件,字串内可用通配符*, ?, []
- iname ’字串’ 忽略大小写查找
-gid n 查找属于ID号为n的用户组的所有文件。
-uid n 查找属于ID号为n的用户的所有文件。
-group ’字串’ 查找属于用户组名为所给字串的所有的文件。
-user ’字串’ 查找属于用户名为所给字串的所有的文件。
-empty 查找大小为0的目录或文件。
-path ’字串’ 查找路径名匹配所给字串的所有文件,字串内可用通配符。
-perm 权限 查找具有指定权限的文件和目录,MODE精确匹配,/MODE 位或匹配,-MODE 位与匹配
-size n 默认精确匹配,+n 匹配大于n的,-n匹配小于n
-type x 查找类型为x的文件
- amin [+-]n 查找n分钟时[前后]被访问过的所有文件。
- atime [+-]n 查找n天时[前后]被访问过的所有文件。
- cmin [+-]n 查找n分钟时[前后]文件状态被修改过的所有文件。
- ctime [+-]n 查找n天时[前后]文件状态被修改过的所有文件。
- mmin [+-]n 查找n分钟时[前后]文件内容被修改过的所有文件。
- mtime [+-]n 查找n天时[前后]文件内容被修改过的所有文件。
  • 实例
    查找/var目录下不属于root, lp, gdm的所有文件
find /var/ -type f ! -user lp ! -user root ! -user gdm

你可能感兴趣的:(Linux基础之 文件查找)