精读笔记 · 第08章 文件查找与打包压缩
大约 3 分钟
精读笔记 · 第08章 文件查找与打包压缩
精读整理自 RHCE9 随堂讲义(原文字版 4 页)|同名视频约 4 节 关联知识文件:
分章笔记/01-Linux/02-01-Linux基础、03-常用命令速查表
一、三类查找工具总览
| 工具 | 用途 | 原理/特点 |
|---|---|---|
which / whereis / type | 找命令文件位置 | 从 PATH 环境变量查找,秒回 |
locate | 找任意文件 | 依赖系统数据库(/var/lib/mlocate),快但不实时 |
find | 找任意文件 | 实时遍历磁盘查找,慢但最精确、条件最丰富 |
二、命令查找
which ls:按 PATH 找命令路径;whereis vim:找命令及其 man/源码目录;type还能识别 alias/内建命令。
三、locate 数据库查找
locate hosts找出所有含 hosts 的文件/目录(例:/etc/hosts)。- 新文件立即查不到:先
updatedb更新数据库再查(root 执行)。
四、find 详解(本章核心,必会)
- 语法:
find [path] [选项] [表达式] [动作],例如find /etc -name "hosts"。 - 常用选项速查: | 选项 | 含义 | 示例 | | --- | --- | --- | |
-name "模式"| 按文件名(区分大小写) |find /etc -name "hosts"| |-iname "模式"| 忽略大小写 |find /etc -iname "hos*"| |-size +5M / 5M / -5M| 大于/等于/小于指定大小 |find /etc -size +5M| |-maxdepth N| 限制查找深度 |find / -maxdepth 4 -a -name "readme-ifcfg*"| |-user 用户名| 按属主 |find /home -user jack| |-group 组名| 按属组 |find /home -group hr| |-type f/b/d/p/l| 按类型:普通/块设备/目录/管道/链接 |find /dev -type b| |-perm 644| 按权限(精确匹配) |find . -perm 644 -ls| |-a| 逻辑与(默认多个条件是 AND) | 见上方 maxdepth 示例 | - 常用动作(ACTIONS):
- 默认动作就是打印:
find . -perm 715 -print(只打印文件名) -ls:打印文件属性详情-delete:找到即删除(小心!)find /etc -name "775*" -delete-ok 命令 {} \;:找到后逐个询问执行,如find /etc -name "hosts*" -ok cp -rvf {} /tmp \;
- 默认动作就是打印:
- 易错补充:
-ok结尾是{} \;;-exec是-exec 命令 {} \;不询问;多条件不加-a默认 AND,-o才是 OR。
五、tar 打包压缩(配合 find 一起记)
- 语法:
tar [选项] 包名 源;打包通常针对目录。 - 常用组合: | 命令 | 含义 | | --- | --- | |
tar -cf etc.tar /etc| 仅打包(c=create f=文件) | |tar -xf etc.tar| 解包 | |tar -czvf etc.tar.gz /etc| 打包+gzip 压缩(z) | |tar -cjf etc.tar.bz2 /etc| bzip2 压缩(j),体积更小 | |tar -cJf etc.tar.xz /etc| xz 压缩(J),体积最小、速度最慢 | |tar -tf etc.tar| 查看包内容(不解压) | |tar -xvf etc.tar.bz2 -C /tmp| 解压到指定目录(-C) | - 体积对比:gzip 11M > bzip2 8.9M > xz 7.6M;压缩率越高速度越慢(压缩速度和体积成反比)。
六、命令速查表
| 场景 | 命令 |
|---|---|
| 查命令位置 | which ls、whereis vim、type |
| 数据库查找 | locate hosts、updatedb |
| 按名/大小/类型/权限查找 | find 路径 -name/-iname/-size/-type/-perm 条件 |
| 深度限制 | find / -maxdepth N -a -name "..." |
| 找到后处理 | -print、-ls、-delete、-ok/-exec 命令 {} \; |
| 打包压缩 | tar -czf x.tar.gz 目录 / -cjf / -cJf |
| 查看/解包 | tar -tf x.tar、tar -xf x.tar.gz、tar -xvf x.tar.gz -C /目标 |
七、易错点
locate结果可能是旧的,新文件必须先updatedb;数据库文件不存在时 locate 直接报错。find的{} \;结尾:-exec/-ok一定带反斜杠分号,漏掉会报语法错误。-delete前先-print或-ls预览,避免误删。-perm 644是精确匹配;想“只要包含写权限”需用-perm -u+w之类符号模式。tar -tf只是看列表不产生文件;解压忘写-C会解到当前目录(可能乱铺)。
八、实操清单
which ls/whereis vim/type cd → 建新文件用 locate 验证 updatedb 必要性 → find 七件套各跑一遍(name/iname/size/maxdepth/user/type/perm)→ 用 -ok cp {} \; 拷贝一批文件到 /tmp → 对 /etc 分别打 gzip/bzip2/xz 三个包并 ll -h 对比体积 → -tf 查看、-C /tmp 解压验证。
九、本章自测
- which/locate/find 各自适用场景与缺点?2. locate 找不到刚创建的文件怎么办?3. find 找 /home 下 jack 属主的普通文件怎么写?4.
-exec与-ok的区别?5. tar 打包到指定目录解压用哪个选项?6. 三个压缩格式体积由大到小?
