一、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目录中,我该如何找出所有类似的文件?
版权归原作者 菩提老鬼 所有, 如有侵权,请联系我们删除。