【Linux Shell】Linux下查找命令或者文件

在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也影响磁盘性能。 

一般而言,我们使用一下两个命令要查找相应的文件,他们分别是:

  1.  whereis: 在一些特定的目录中查找文件
  2. 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的文件。

发布了137 篇原创文章 · 获赞 19 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/qq_43338695/article/details/103845031