一、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归档文章来源:https://www.toymoban.com/news/detail-831164.html
● 重点理解:-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目录中,我该如何找出所有类似的文件?文章来源地址https://www.toymoban.com/news/detail-831164.html
到了这里,关于12 - Linux CentOS 7 文件和目录搜索(which、whereis、locate、find)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!