在Windows中我们可以方便地在资源管理器内查找相应的文件,在Linux GUI下确实也做得到(比如GNOME的“文件”中就可以查找相应的文件),那么我们能不能通过命令行的方式进行查找呢?当然可以。
一. 查找Bash Shell内置的命令
为了方便shell的操作,Bash shell其实已经集成了很多命令,比如:cd,ls,history,umask等。
这些命令不是以脚本文件的形式存在在你的硬盘上的,所以你直接在目录树中搜是搜索不到的,想要查看一个命令是否是Bash内置的,方法是键入:
type command
然后他就会告诉你这个命令是否是Bash shell内置的了。
(其实用csdn的插入bash代码也是可以进行判断的,你写进去的命令,如果是bash内置的,就会高亮;如果是存在硬盘里的二进制命令的话,就不会高亮)
二. 查找脚本文件
除了Bash Shell内置的命令外,几乎所有的命令都是以脚本文件的形式存在在你的硬盘上。
你之所以能够快速地执行命令,是因为对应的脚本文件的绝对路径已经加入到了你的PATH中,shell通过PATH就能找到并执行你的脚本文件。
所以,如果我们要搜寻这种脚本文件,也只要从PATH中的路径集合中搜寻就行了。对应的命令为:
which command
三. 查找相应的文件
Linux一个很著名的查找文件的命令就是find,然而,除了速度慢以外,find也影响磁盘性能。
一般而言,我们使用一下两个命令要查找相应的文件,他们分别是:
- whereis: 在一些特定的目录中查找文件。
- locate: 根据数据库来查找文件。
在这两个都找不到的情况下,我们才使用find。
(1). whereis
先来谈谈whereis,所谓的特定目录可以通过一下的命令来查看:
# 如果你真的执行了这个,你会发现这些目录是有bin man src三个分类的
whereis -l
查找相应的文件方法也比较简单,那就是:
whereis filename
(2). locate
locate则是根据数据库来寻找相应的文件,这个数据库就存在/var/lib/mlocate中。
一般而言,这个数据库是一天一更新,你可以通过updatedb指令来强制使他更新。
查找文件的方式和whereis一模一样(区别是你还可以使用正则表达式):
locate filename
四. 使用find来进行文件的查找
最后我们要将的就是最强大的find, 我们使用这个来寻找Linux文件夹下的文件。
值得注意的是find不仅仅可以根据名称进行文件的查找,还能根据权限,大小,修改时间来进行查找。
以前的我总认为学习就要一股脑地全部学完,当然现在我已经不那么认为了,最重要的还是讲最常用的东西刻在骨子里。
所以这里只介绍用find搜寻给定文件名的文件。
你要知道find和之前讲的locate和whereis不同,它的使用模式是:
find [PATH] [OPTION] [MODE]
如果是要搜寻对应文件名的文件的话,模式是:
find PATH -name filename [ACTION]
和之前两个命令的一个重要区别就在于他要指定搜寻路径。
还有一个值得注意的地方就是ACTION, 这个又是一个什么东西呢?以一个例子简单介绍一下:
find / -perm /7000 -exec ls -l {} \;
其中,ACTION就被定义为是-exec到\;中间的全部内容。find的结果讲被放到{}中去。
所以这个命令的作用就是列出根目录下权限为7000的文件。