当前位置:首页 » 《随便一记》 » 正文

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

5 人参与  2024年04月17日 15:12  分类 : 《随便一记》  评论

点击全文阅读


一、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' -exec tar -acf a.tar.gz '{}' \;#### 方法2:##      特点:快(每1次动作,可处理多个find匹配对象)##      注意:tar采用的是-c覆盖打包选项,由于tar命令行可追加的打包对象参数有限,因此,最终仅打包了最后的一组文件##find /tmp -name '*.txt' -exec tar -acf b.tar.gz '{}' +#### 方法3:##      特点:快(每1次动作,可处理多个find匹配对象)##      注意:tar采用的是-r追加打包选项,即便tar命令行可追加的打包对象参数有限,也可最终打包所有的文件##find /tmp -name '*.txt' -exec tar -arf c.tar.gz '{}' +#### 方法4:##      特点:快(将全部的find匹配对象,通过 | 管道符,一次性交给tar命令去处理)##      注意:tar采用的是-c覆盖打包选项,由于tar命令行可追加的打包对象参数有限,因此,最终仅打包了最后的一组文件##find /tmp -name '*.txt' | xargs tar -acf d.tar.gz#### 方法5:##      特点:快(将全部的find匹配对象,通过 | 管道符,一次性交给tar命令去处理)##      注意:tar采用的是-r追加打包选项,即便tar命令行可追加的打包对象参数有限,也可最终打包所有的文件##find /tmp -name '*.txt' | xargs tar -arf e.tar.gz

★ 课后作业

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


点击全文阅读


本文链接:http://zhangshiyu.com/post/96595.html

<< 上一篇 下一篇 >>

  • 评论(0)
  • 赞助本站

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

关于我们 | 我要投稿 | 免责申明

Copyright © 2020-2022 ZhangShiYu.com Rights Reserved.豫ICP备2022013469号-1