一、文件查找工具
1. locate 快速查找
locate [选项] 文件名
| 选项 | 功能 | 示例 |
|---|---|---|
-i |
忽略大小写 | locate -i config |
-r |
使用正则表达式 | locate -r "\.conf$" |
-n N |
仅显示前N个结果 | locate -n 5 "*.log" |
注意事项:
- 依赖数据库更新:
sudo updatedb - 无法实时查找新文件(需更新数据库)
- 默认数据库更新周期:每日自动更新
二、find 高级查找
1. 基本语法
find [路径] [选项] [操作]
2. 核心搜索条件
| 条件类型 | 选项 | 示例 |
|---|---|---|
| 名称/INODE | -name "模式" |
find /etc -name "*.conf" |
-iname "模式" |
find . -iname "readme*" |
|
-inum N |
find / -inum 12345 |
|
| 文件类型 | -type [fdlbcsp] |
find /var -type d (目录) |
| 用户/组 | -user name |
find /home -user alice |
-group name |
find / -group devs |
|
| 特殊归属 | -nouser |
find /tmp -nouser (无属主文件) |
-nogroup |
find /var -nogroup (无属组文件) |
|
| 空文件 | -empty |
find . -empty |
| 目录深度 | -maxdepth N |
find / -maxdepth 2 -name "*.log" |
-mindepth N |
find /var -mindepth 3 -type f |
|
| 文件大小 | -size [+-]N[cwkMG] |
find / -size +100M (>100MB) |
| 时间戳(天) | -atime/-mtime/-ctime N |
find /var/log -mtime -7 (7天内修改) |
| 时间戳(分) | -amin/-mmin/-cmin N |
find ~ -amin -30 (30分钟内访问) |
| 权限 | -perm 644 |
精确匹配权限 |
-perm /444 |
任意用户有读权限 | |
-perm -444 |
所有用户有读权限 |
3. 组合条件与逻辑运算
| 逻辑符 | 含义 | 示例 |
|---|---|---|
-a |
与 (默认) | find / -size +50M -a -name "*.iso" |
-o |
或 | find / \( -name "*.txt" -o -name "*.log" \) |
-not |
非 | find /var -not -user root |
复杂示例:
# 查找/etc下非security目录的.conf文件
find /etc -path '/etc/security' -prune -o -name "*.conf" -print
# 使用德摩根定律:非(root或postfix用户)的文件
find /var -mtime -7 -not \( -user root -o -user postfix \)
4. 处理动作
| 动作 | 功能 | 示例 |
|---|---|---|
-ls |
显示详细信息 | find /tmp -name "*.tmp" -ls |
-fls 文件 |
保存结果到文件 | find /home -fls results.txt |
-delete |
删除文件 | find /var/tmp -mtime +30 -delete |
-exec 命令 \; |
执行命令(无确认) | find . -name "*.bak" -exec rm {} \; |
-ok 命令 \; |
执行命令(需确认) | find . -size +100M -ok mv {} /backup/ \; |
企业级应用:
# 查找并删除大文件
find /var/log -size +500M -delete
# 批量复制文件(使用占位符 {})
find /src -name "*.conf" -exec cp {} /backup/ \;
三、xargs 命令增强
1. 核心功能
将标准输入转换为命令行参数
find [条件] | xargs [选项] [命令]
2. 常用选项
| 选项 | 功能 | 示例 |
|---|---|---|
-n N |
每次传递N个参数 | `echo 1 2 3 4 |
-I {} |
替换字符串 | `find . -name “*.txt” |
-t |
先打印命令再执行 | `echo file |
-p |
交互式确认 | `find /tmp |
-r |
无输入时不执行命令 | `find /empty |
-0 |
处理含空格/特殊字符的文件名 | `find -print0 |
3. 安全处理含空格文件名
# 标准方式(推荐)
find . -print0 | xargs -0 rm
# 传统方式(危险!可能误删)
find . | xargs rm # 文件名含空格时会出错
四、文件压缩与打包
1. 单文件压缩工具对比
| 工具 | 压缩命令 | 解压命令 | 特性 |
|---|---|---|---|
compress |
compress 文件 |
uncompress 文件.Z |
古老格式,不推荐 |
gzip |
gzip 文件 |
gunzip 文件.gz |
速度快,通用 |
bzip2 |
bzip2 文件 |
bunzip2 文件.bz2 |
压缩率高,速度慢 |
xz |
xz 文件 |
unxz 文件.xz |
超高压缩率,速度最慢 |
| 通用选项 | -k 保留原文件 |
-d 解压 |
-# 压缩级别(1-9) |
高级用法:
# 保留原文件压缩
gzip -k -9 largefile.iso
# 查看而不解压
zcat file.gz # gzip
bzcat file.bz2 # bzip2
xzcat file.xz # xz
2. zip 跨平台压缩
# 压缩文件/目录
zip -r 存档名.zip 文件或目录
# 加密压缩
zip -P 密码 加密.zip 敏感文件
# 解压到指定目录
unzip 存档.zip -d 目标目录
3. tar 归档大师
# 基础语法
tar [主选项] [辅选项] 存档文件 文件/目录
| 主选项 | 功能 | 辅选项 | 功能 |
|---|---|---|---|
c |
创建存档 | v |
显示详细过程 |
x |
解压存档 | f |
指定存档文件 |
t |
查看内容 | C |
指定解压目录 |
压缩联合用法:
# 创建压缩存档
tar czvf 存档.tar.gz 目录 # gzip压缩
tar cjvf 存档.tar.bz2 目录 # bzip2压缩
tar cJvf 存档.tar.xz 目录 # xz压缩
# 解压压缩包
tar xzvf 存档.tar.gz -C 目标目录
tar xjvf 存档.tar.bz2
tar xJvf 存档.tar.xz
4. 企业级应用
# 生成大文件测试
dd if=/dev/zero of=test.img bs=1M count=1024
# 查找并压缩历史日志
find /var/log -name "*.log" -mtime +30 -exec tar czvf old_logs.tar.gz {} +
五、重点技巧总结
-
find 黄金组合:
# 安全处理含空格文件名 find . -print0 | xargs -0 command # 复杂条件搜索 find / \( -path /proc -o -path /sys \) -prune -o -name "*.conf" -
压缩选择建议:
- 快速压缩 →
gzip - 高压缩率 →
xz - Windows兼容 →
zip
- 快速压缩 →
-
生产环境规范:
# 清理30天前日志 find /var/log -type f -name "*.log" -mtime +30 -delete # 每日备份增量 tar czvf backup-$(date +%F).tar.gz --newer-than "1 day ago" /data