鸟哥的Linux私房菜(七)——命令与文件的查找

       在Linux系统中,"一切皆是文件"。我们经常需要知道某个文件具体存放的位置,才能对该文件进行一些修改或维护等操作。而且很多软件配置文件的文件名是不变的,但是默认分配放置的目录不同。此时就需要一些文件查询命令将文件的完整名称和具体位置查询出来,从而对文件进行相应的操作。


一、file的用法

作用:查看文件类型判断文件里面的基本数据属于哪种,比如属于ASCII或者data文件,还是binary。在我们使用查询命令之前,往往先用file判断一下文件类型,从而使用相应的查询命令。

格式:file  文件名

举例:

二、脚本文件名的查询

       在终端模式下,连续输入两个[Tab]键就能知道用户有多少命令可以执行。那这些执行命令的完整文件名存放在哪里呢?我们可以通过which或者type命令来寻找。

1、which的用法

作用:查找并显示给定命令的绝对路径,环境变量PATH中保存了查找命令时需要遍历的目录。根据PATH这个环境变量所规范的路径去查询“执行文件”的文件名。

格式:which   [-a]   command(命令名) 

参数:

         -a——  将所有由PATH目录中可以找得到的命令均列出,而非仅显示第一个

适用场景:

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

举例:

 

2、type查询路径的用法

        一般情况下,type命令被用于判断某一命令是否是内置命令(shell自带的命令),但是它实际上有更多的用法。在这里我们仅对type查询路径的用法进行讲解。如果是shell自带的命令,则会提示此命令为shell buildin;如果一个命令是外部命令,那么使用 shell  -p  就会显示该命令的路径,相当于which命令

作用:查看一个命令的执行路径(如果它是外部命令的话)

格式:type [-p]  command

参数:

        -p —— 只返回外部命令的信息,相当于which命令。

举例:

 

三、文件名的查找

1、whereis的用法

作用:查找系统中某些特定目录下的文件

格式:whereis   [-bmsu]   文件或目录名

参数:

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

        -m ——  只找在说明文件manual路径下的文件

        -s  ——  只找sourse源文件

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

适用场景:

       二进制文件、源文件和帮助手册文件路径的查找。

举例:

 

2、locate的用法

作用:从数据库建立的索引中查找,该命令查找所有部分匹配的文件,使用之前可以使用updatedb命令手动更新数据库。

格式:locate   [-ir]   keywork

参数:

         -i  ——  忽略大小写的差异

         -r ——   后面可接正则表达式的显示方式

适用场景:

       适用于文件的模糊查找,尤其在只记得部分文件名的情况下。

举例:

3、find的用法

find是个很强大的查找命令,但因为find是直接在硬盘上遍历查找,所以花费的时间比较长,而且十分耗费资源

作用:遍历当前工作目录及其子目录递归的搜索文件

格式:find  [PATH]  [option]  [action]

参数:

       - PATH: 所要搜索的目录及其所有子目录,默认为当前目录。

       - option: 所要搜索的文件的特征。

       - action: 对搜索结果进行特定的处理

        1)与时间有关的参数:-atime(访问时间) 、-ctime(状态修改时间) 、与-mtime(修改时间)。以下是具体的说明:

            -atime  n: 将n*24小时内access过的文件列出来。

            n为数字,n表示n天前的24小时之内,+n表示n天之前(不含n天本身),-n表示n天之内(含n天本身)

            -ctime   n: 将n*24小时内状态发生改变的文件列出来

            -mtime  n: 将n*24小时内被修改过的文件列出来

            -newer file: file 为存在的文件,把比file还要新的文件名列出来

举例:

  • 将过去系统上24小时内有改动的文件列出

  • 寻找/etc下面的文件,如果文件日期比/etc/passwd新就列出

        2)与用户或用户组名有关的参数:

            -uid  n:n为数字,这个数字是用户的账号ID,即UID。

            -gid  n:n为数字,这个数字是用户组名的账号ID,即GID

            -user name:name 为用户账号名称。

            -group name :name 为用户组名。

            -nouser :寻找文件的所有者不存在于/etc/passwd 的人 。

            -nogroup :寻找文件的所有用户组不存在于/etc/group 中的文件 。

 

适用场景:

        find的查找效率相比whereis和locate较低,能用which、whereis和locate的时候尽量不要用find

 

 

参考链接:

https://zhidao.baidu.com/question/812679475920289452.html

https://blog.csdn.net/u010625000/article/details/44455023

https://blog.csdn.net/jessica1201/article/details/8139249

https://wenku.baidu.com/view/5a355c0390c69ec3d5bb758a.html

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值