【分享】Linux下文件查找

Posted by 橙叶 on Fri, Nov 4, 2016

前言

在我们的Linux下有成千上万个系统文件,还有许多我们自己创建的文件,在Windows下我们需要查找文件的时候可以去搜索里面输入文件名然后自动去查找在Linux下同样也可以这样去操作,看起来是不是很酷!在Linux下有好多常用的查找命令,我们一一来介绍。 linux-logo

一、Whereis 程序名的搜索

whereis命令只能用于程序名的搜索,而且只搜索二进制文件(参数-b)、man说明文件(参数-m)和源代码文件(参数-s)。如果省略参数,则返回所有信息

1.1、查看帮助信息

看到一个命令的时候,请养成这样的习惯去help一下
1
2
3
[root@tshare365 ~]
# whereis  --help
whereis
 
[ -sbmu ] [ -SBM 
dir
 
... -f ] name...
[root@tshare365 ~]
#
参数说明:

-b 只查找二进制文件 -m 只查找帮助文件 -s 只查找源代码 -u 排除指定类型文件 -f 只显示文件名 -B <目录> 在指定目录下查找二进制文件 -M <目录> 在指定目录下查找帮助文件

-S <目录> 在指定目录下查找源代码

1.2、演示示例

1
2
3
4
5
[root@tshare365 ~]
# whereis -b ls
ls
/bin/ls
[root@tshare365 ~]
# rpm -qf /bin/ls
coreutils-8.4-31.el6.x86_64
[root@tshare365 ~]
#
注释:

看到whereis的用法了吧,还是相当有用的,如果我们系统中有一个命令,但是我们确不知道是通过什么软件包安装的时候whereis还是可以帮助的,如果你对rpm的命令不熟悉请点击 rpm详解

二、Which 命令

which命令的作用是,在PATH变量指定的路径中,搜索某个系统命令的位置,并且返回第一个搜索结果。也就是说,使用which命令,就可以看到某个系统命令是否存在,以及执行的到底是哪一个位置的命令

2.1、示例

1
2
3
4
5
[root@tshare365 ~]
# which  grep
/bin/grep
[root@tshare365 ~]
# which  ls
alias
 
ls
=
'ls --color=auto'
    
/bin/ls
我们看到ls 其实是一个alias 是一个别名!我们在ls的时候看到文件的不同颜色,原来是这样来的!

三、type命令

type命令其实不能算查找命令,它是用来区分某个命令到底是由shell自带的,还是由shell外部的独立二进制文件提供的。如果一个命令是外部命令,那么使用-p参数,会显示该命令的路径,相当于which命令。

3.1、示例

1
2
3
4
5
6
7
8
[root@tshare365 ~]
# type cd 
cd
 
is a shell 
builtin
#builtin表示命令是shell内部命令,也是shell本身自带的
[root@tshare365 ~]
# type grep
grep
 
is 
/bin/grep
[root@tshare365 ~]
# type -p grep
/bin/grep
[root@tshare365 ~]
#

四、locate命令

locate命令其实是"find -name"的另一种写法,但是要比后者快得多,原因在于它不搜索具体目录,而是搜索一个数据库(/var/lib/locatedb),这个数据库中含有本地所有文件信息。Linux系统自动创建这个数据库,并且每天自动更新一次,所以使用locate命令查不到最新变动过的文件。为了避免这种情况,可以在使用locate之前,先使用updatedb命令,手动更新数据库。
1
2
3
[root@tshare365 ~]
# locate tshare365 
/root/tshare365
[root@tshare365 ~]
#
以上是最简单的查找方式,还有一种就是使用find命令去查找,find命令是比较重量级的,查找功能强大,查找速度较慢,以上介绍的四个命令我们常用的也是locate和 which命令,大家可以先熟悉一下,我打算将find命令的详细介绍放在下一篇博客中,如果对以上这些操作有什么问题,请留言!

comments powered by Disqus