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


一、file的用法

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

格式:file  文件名

举例:

OpenFileDescriptor 怎么查看详情 怎么查看file文件_搜索

二、脚本文件名的查询

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

1、which的用法

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

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

参数:

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

适用场景:

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

举例:

OpenFileDescriptor 怎么查看详情 怎么查看file文件_文件名_02

 

2、type查询路径的用法

如果是shell自带的命令,则会提示此命令为shell buildin;如果一个命令是外部命令,那么使用 shell  -p  就会显示该命令的路径,相当于which命令。

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

格式:type [-p]  command

参数:

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

举例:

OpenFileDescriptor 怎么查看详情 怎么查看file文件_文件名_03

 

三、文件名的查找

1、whereis的用法

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

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

参数:

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

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

        -s  ——  只找sourse源文件

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

适用场景:

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

举例:

OpenFileDescriptor 怎么查看详情 怎么查看file文件_用户组_04

 

2、locate的用法

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

格式:locate   [-ir]   keywork

参数:

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

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

适用场景:

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

举例:

OpenFileDescriptor 怎么查看详情 怎么查看file文件_用户组_05

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小时内有改动的文件列出

OpenFileDescriptor 怎么查看详情 怎么查看file文件_用户组_06

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

OpenFileDescriptor 怎么查看详情 怎么查看file文件_用户组_07

        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://wenku.baidu.com/view/5a355c0390c69ec3d5bb758a.html