Linux命令与文件的查询


1  脚本文件名的查询

  • which(寻找“执行文件“)

             参数-a  :将所有由path目录中可以找到的命令均列出,而不止第一个被找到的目录名称

  • 以 ifconfig为例

linux查询指定名称的docker linux查询指定文件_linux查询指定名称的docker

 可以找到正确的文件执行名

  • 以which 本身为例


    linux查询指定名称的docker linux查询指定文件_linux查询指定名称的docker_02

    alias--->命令别名,输入which会等于后面接的那串命令
  • 以常用的cd指令为例

linux查询指定名称的docker linux查询指定文件_shell_03

为什么会找不到呢?


原因在于which的查找机制,which是默认查找PATH内所规范的目录,cd是bash内置的命令当然找不到啦,这里我们使用type指令

linux查询指定名称的docker linux查询指定文件_shell_04

   

可以看出cd是一个shell builtin 即就内置命令

2  文件名的查找

         通常而言我们不常使用find指令,由于find指令需要在内存中查找,速度会很慢,所以我们会先使用whereis和locate来检查,如果找不到再使用find,whereis和locate都是使用数据库来查找,所以速度很快。


  • whereis(寻找特定文件)

参数:-b  :只查找二进制格式文件

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

          -s   :只找source源文件

          -u   :查找不再上述三个选项中的其他文件

  • 以ifconfig指令为例

linux查询指定名称的docker linux查询指定文件_shell_05


    只找出跟passwd有关的是”说明文件“

linux查询指定名称的docker linux查询指定文件_文件名_06


  • locate

locate指令使用非常简单,直接后面输入”文件部分名称“即可

参数:-i    忽略大小写的差异

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

  • 以passwd为例

  

linux查询指定名称的docker linux查询指定文件_操作系统_07

只要含有 passwd在其中,就会被显示出来。

使用限制:由于locate查找数据是由 已创建的数据库库/var/lib/mlocata/所查到的,数据库信息需要更新,所以当我们新建一个文件夹后查找这个文件

由于数据库并未更新,所以会查不到,我们可以采用手动更新数据库的方式。---->直接输入updatesb





  • find指令

这是一个很重要的指令,直接在内存中查找。

时间参数:以-mtime为例

     -mtime n  :n为数字,意义为在n天之前的”一天之内“被更改过的文件

     -mtime +n   :列出在n天之前(不含n天本身)被更改的文件名

     -mtime  -n     :列出在n天之内(含n天本身)被更改过的文件名

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

图示为:

以find /var -mtime4 为例时间轴为:

linux查询指定名称的docker linux查询指定文件_linux查询指定名称的docker_08


与用户或用户组有关的参数

     -uid  n:这个数字是用户的账号ID,记录在/etc/passwd中与账号名称对应的数字

     -gid  n:n为用户组名的ID

     -username  :name为用户账号名称 如root 

     -groupname:name为用户组名

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

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

  • 查找 /home下属于dz的文件:

linux查询指定名称的docker linux查询指定文件_数据库_09

   查找根目录中不属于任何人的文件

linux查询指定名称的docker linux查询指定文件_shell_10

-name filename 查找文件名为 1 的文件

linux查询指定名称的docker linux查询指定文件_文件名_11


-name [+ -]size  查找比size还要大的文件  size规格:c:代表byte,k代表1024bytes 要找

以找比50kb小的文件为例

linux查询指定名称的docker linux查询指定文件_linux查询指定名称的docker_12

-type type:查找类型为type的文件

以查找正规文件为例(f)

linux查询指定名称的docker linux查询指定文件_shell_13

 文件权限参数

-pern mode :查找文件类型刚好等于 mode的文件

-pern -mode:查找文件权限  必须要全部包含mode权限的文件

-pern +mode  查找文件权限 包含任意mode权限的文件

            比如说我们查找-rwx r-x r-x 即 -pern+755时候也会包括一个-rw- --- ---文件存在,因为他    包含了-rw属性

查找权限为777的文件

linux查询指定名称的docker linux查询指定文件_数据库_14


权限为包含任意一个777以内权限的文件

linux查询指定名称的docker linux查询指定文件_文件名_15

权限为 必须包含777所有权限的文件

linux查询指定名称的docker linux查询指定文件_shell_16


其他操作:


-exec command:commad 为其他命令,-exec后面可接其他命令来处理查找的结果


如 将权限包含7000其中之一的文件 使用ls -l列出来

linux查询指定名称的docker linux查询指定文件_linux查询指定名称的docker_17

以find  / perm +7000 -exec  ls -l  {}  \;  指令为例

linux查询指定名称的docker linux查询指定文件_shell_18





转载于:https://blog.51cto.com/10955910/1775860