0


12 - Linux CentOS 7 文件和目录搜索(which、whereis、locate、find)

一、which 命令(简单方便)

★ 功能:依据$PATH 环境变量中的目录路径,查找命令文件的文件路径。
★ 举例:
在这里插入图片描述

二、whereis 命令

★ 功能1:依据

     P 
    
   
     A 
    
   
     T 
    
   
     H 
    
   
     环境变量中的目录路径,查找命令文件的文件路径。★功能 
    
   
     2 
    
   
     :依据 
    
   
  
    PATH 环境变量中的目录路径,查找命令文件的文件路径。 ★ 功能2:依据 
   
  
PATH环境变量中的目录路径,查找命令文件的文件路径。★功能2:依据MANPATH 环境变量中的目录路径,查找命令文件的man帮助文件路径。

★ 举例:
在这里插入图片描述

三、locate 命令(不常用)

★ 功能:依据mlocate.db 数据库,查找匹配指定关键字的所有目录和文件路径

## 需要事先构建/var/lib/mlocate/mlocate.db 数据库,mlocate.db数据库中,不会包含/tmp 目录内容## 构建:mlocate.db 数据库
yum install mlocate -y## 安装:locate 命令工具
updatedb                   ## 更新:mlocate.db 数据库

★ 举例:查找包含着shadow字符串的所有目录和文件路径

locate shadow

在这里插入图片描述

四、find 命令(强大的搜索命令)

★ 理解:find命令的命令结构
在这里插入图片描述
★ 语法:find [-H] [-L] [-P] [-Olevel] [-D help|tree|search|stat|rates|opt|exec] [path…] [expression]

## 备注:##  [-P] [-L] [-H] 选项:针对<搜索范围>中的<符号链接>,设定是否<追溯搜索>##   ♦ 如果同时指定了 [-P] [-L] [-H] 选项(即:1个以上),则:从右向左,依次替代,最后一个生效。##   ♦ [-P]  针对<搜索范围>中的<符号链接>,拒绝<链接追随>,这是<默认行为>。##           举例:find -P /bin -iname 'cat'  ## <搜索范围>指定的是</bin符号链接文件>,-P 会拒绝<链接追随>##   ♦ [-L]  针对<搜索范围>中的<符号链接>,允许<链接追随>。##           举例:find -L /bin -iname 'cat'  ## <搜索范围>指定的是</bin符号链接文件>,-L 会允许<链接追随>##   ♦ [-H]  针对<搜索范围>中的<符号链接>,拒绝<链接追随>(除非:<搜索范围>直接指定为一个<符号链接>)。##           举例:find -H /bin -iname 'cat'  ## <搜索范围>直接指定为</bin符号链接文件>,-H 会允许<链接追随>

★ 指定:find 搜索范围:

直接指定:[选项]<目录路径1><目录路径2>...
举例:find /dir01 /dir02 /dir03 ...

★ 设定:find 搜索条件:

#### 常见条件类型如下:##  ♦ N  代表:<选项值>,它可以是:+N(大于) 或 -N(小于) 或 N(等于)##

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
★ 设定:多条件组合
在这里插入图片描述
在这里插入图片描述
★ 设定:find 处理动作

#### 常见动作如下:##-print## 显示:<匹配对象>的<名称、绝对/相对路径>,这是一个默认动作,可以省略,用于:标准输出find匹配对象-ls## 列出:<匹配对象>的<详细信息>,<-ls动作>等价于<ls -dlis命令>-delete## 删除:<匹配对象>-prune## 设置:如果<匹配对象>是<目录>,则不要进入该<目录>-exec## 定义:针对find匹配对象,执行一个指定COMMAND命令。##       我们可以通过一个或多个 -exec 动作选项,来执行一个或多个指定COMMAND命令。## 命令形式:command '{}' \; 每匹配一个对象,'{}'就覆盖式置换一个对象,然后执行一次动作。##                            ♦ 在 '{}' \; 组合中,依据command命令意图,必须有且可有1个或多个'{}'。##                            ♦ \; 表示:该 -exec动作结束##                            ♦ \  是转义符,用于表示:该<;分号>不是<SHELL命令行>的<;分号分隔符>。##                            ♦ 注意:※ 针对大批量的find匹配对象,执行效率低下。##            command '{}' + 每匹配一个对象,'{}'就追加式置换一个对象,然后执行一次动作。##                            ♦ 在 '{}' + 组合中,依据command命令意图,必须有且仅有1个'{}'。##                            ♦ 在 '{}' + 组合中,+ 表示:可以在'{}'中,自动追加多个find匹配对象。##                            ♦ <+加号>的作用与<xargs命令>相同。##                            ♦ 注意:##                                ※ 追加多个find匹配对象,会大大减少动作次数。##                                ※ 针对大批量find匹配对象,会提高执行效率。##                                ※ 可追加的<find匹配对象总数>将受限于command命令自身的语法限制。##            注意: '{}' 和 \; 和 + 彼此之间需要有【空格】

★ 案例学习1:查看根目录下所有的 TXT 格式的文件
在这里插入图片描述
★ 案例学习2:把查找到的文件复制到一个指定的目录
在这里插入图片描述
★ 案例学习3:把查找到的TXT文件,全部予以tar归档

● 重点理解:-exec动作的 '{}'\; 和 '{}' + 两种不同处理机制,从而了解如何提高find动作的处理效率。
touch /tmp/{1..10000}.txt
#### 方法1:##      特点:慢(每1次动作,仅处理1个find匹配对象)##      注意:tar采用的是-c覆盖打包选项,因此,最终仅打包了最后一个文件##find /tmp -name'*.txt'-exectar-acf a.tar.gz '{}'\;#### 方法2:##      特点:快(每1次动作,可处理多个find匹配对象)##      注意:tar采用的是-c覆盖打包选项,由于tar命令行可追加的打包对象参数有限,因此,最终仅打包了最后的一组文件##find /tmp -name'*.txt'-exectar-acf b.tar.gz '{}' +
#### 方法3:##      特点:快(每1次动作,可处理多个find匹配对象)##      注意:tar采用的是-r追加打包选项,即便tar命令行可追加的打包对象参数有限,也可最终打包所有的文件##find /tmp -name'*.txt'-exectar-arf c.tar.gz '{}' +
#### 方法4:##      特点:快(将全部的find匹配对象,通过 | 管道符,一次性交给tar命令去处理)##      注意:tar采用的是-c覆盖打包选项,由于tar命令行可追加的打包对象参数有限,因此,最终仅打包了最后的一组文件##find /tmp -name'*.txt'|xargstar-acf d.tar.gz
#### 方法5:##      特点:快(将全部的find匹配对象,通过 | 管道符,一次性交给tar命令去处理)##      注意:tar采用的是-r追加打包选项,即便tar命令行可追加的打包对象参数有限,也可最终打包所有的文件##find /tmp -name'*.txt'|xargstar-arf e.tar.gz

★ 课后作业

1.现在我要执行ss命令,我想知道这个ss命令文件的真实绝对路径。请问:该如何做?
2.我记得有一个文件的文件名好像是ifcfg开头,好像在/etc目录中,我该如何找出所有类似的文件?

标签: linux centos 运维

本文转载自: https://blog.csdn.net/wxwh410/article/details/134447125
版权归原作者 菩提老鬼 所有, 如有侵权,请联系我们删除。

“12 - Linux CentOS 7 文件和目录搜索(which、whereis、locate、find)”的评论:

还没有评论