linux查找文件命令

Linux与查找相关的命令主要有以下4个:whereis、locate、find、which。其中find 不常用,whereis与locate经常使用,因为whereis与locate是利用数据库来查找数据,而find直接查找硬盘,速度较慢。which则是在PATH变量指定的路径中搜索指定的系统命令的位置。下面讲一下各自的用法

whereis

whereis 命令只能对用户程序名称的搜索,即:定位/返回与指定名字匹配的二进制文件、源文件和帮助手册文件所在的路径。

whereis查找的速度非常快,这是因为linux系统会将系统内的所有文件都记录在一个数据库文件中,当使用whereis和locate时,会从数据库中查找数据,而不是像find命令那样,通 过遍历硬盘来查找,效率自然会很高。 但是该数据库文件并不是实时更新,默认情况下时一星期更新一次,因此,我们在用whereis和locate 查找文件时,有时会找到已经被删除的数据,或者刚刚建立文件,却无法查找到,原因就是因为数据库文件没有被更新。

whereis [-bmsu] 文件或者目录名

  -b: 只找二进制格式的文件

  -m: 只找在说明文件manual 路劲下的文件

  -s: 只找source 源文件

  -u: 查找不在上述三个选项中的其他特殊文件

例如:

root@test config]# whereis find
find: /bin/find /usr/bin/find /usr/share/man/man1/find.1.gz

[root@test config]# whereis -b find
find: /bin/find /usr/bin/find

[root@test config]# whereis -m find
find: /usr/share/man/man1/find.1.gz

[root@test config]# whereis -s find
find:

[root@test config]# whereis -u find
find: /bin/find /usr/bin/find /usr/share/man/man1/find.1.gz

locate

使用范围比whereis大的多,只需要部分文件名就可以进行模糊查询,同时locte还可以通过-r选项使用正则表达式,功能十分强大。与whereis一样 locate使用的索引数据库里的信息并不一定是实时有效的,可以使用updatedb命令更新索引数据库

locate [-ir] keyword

例如:查询passwd命令,查找包含passwd字符的文件,显示前3条记录

[root@oracledb ahome]# locate passwd|head -n 5
/etc/passwd
/etc/passwd-
/etc/pam.d/passwd

find
命令遍历当前工作目录及其子目录,在硬盘上遍历查找,非常耗硬盘资源,能用which、whereis和locate就不要用find。

find [option] [path1 path2 ……] [filename]
参数说明:
时间查找参数:
-atime n: 将n*24小时内access过的文件列出来
-ctime n: 将n*24小时内状态发生改变的文件列出来
-mtime n: 将n*24小时内被修改过的文件列出来
-newer file: 把比file还要新的文件列出来
名称查找参数:
-gid n: 寻找群组ID为n的文件
-group name: 寻找群组名称为name的文件
-uid n: 寻找拥有者ID为n的文件
-user name: 寻找拥有者名称为name的文件
-name file: 寻找文件名为file的文件(可以使用通配符)

which

执行which命令时,which会在当前环境变量PATH中依次寻找能够匹配所找命令名字的可执行文件名,不加-a选项,返回第一个匹配的可执行文件的路径,否则依次返回满足条件的所有可执行文件的路径名。

一般用于查找命令/可执行文件所在的路径。有时候可能在多个路径下存在相同的命令,该命令可用于查找当前所执行的命令到底是哪一个位置处的命令。

以下是比较
linux查找文件命令

上一篇:MongoDB基本用法


下一篇:Robot Framework-DatabaseLibrary数据库(MySql)