文件查找与打包压缩

内容目录

一、文件查找工具

1. locate:快速查找工具

  • 基于数据库 /var/lib/mlocate/mlocate.db,更新不及时;
  • 使用前建议运行 updatedb 更新数据库(需要 root 权限);
locate filename

示例:

locate passwd

2. find:功能全面的查找工具

常用语法

find [起始路径] [匹配条件] [处理动作]

常用匹配条件:

条件含义
-name "*.txt"按文件名匹配
-type f/df:文件, d:目录
-size +10M大于 10MB
-mtime -3修改时间在 3 天内
-user 用户名属主为指定用户
-perm 777权限为 777 的文件

处理动作:

  • -print:输出结果(默认);
  • -exec:对查找到的每个文件执行命令;
  • -delete:删除匹配项(小心使用);
# 查找当前目录下所有 .log 文件
find . -name "*.log"

# 删除所有 .tmp 文件
find /tmp -name "*.tmp" -delete

# 查找大于 100MB 的文件
find . -type f -size +100M

# 使用 exec 对匹配文件运行命令
find . -name "*.log" -exec rm -f {} \;

3. xargs:参数批量替换器

将标准输入转为命令行参数,常与 find 搭配使用。

# 删除所有匹配到的 .log 文件(推荐)
find . -name "*.log" | xargs rm -f

# 批量打包指定类型文件
find . -name "*.txt" | xargs tar -czf txt.tar.gz

二、压缩与解压缩工具

1. compress / uncompress

  • 历史命令,不推荐;
  • 生成 .Z 文件。
compress file
uncompress file.Z

2. gzip / gunzip

  • 常见压缩工具,生成 .gz 文件;
  • 不能压缩目录,适合文件。
gzip file.txt        # 生成 file.txt.gz
gunzip file.txt.gz   # 解压
  • 带保留原文件的压缩:
gzip -k file.txt

3. bzip2 / bunzip2

  • 压缩比高于 gzip,生成 .bz2 文件;
bzip2 file.log
bunzip2 file.log.bz2

4. xz / unxz

  • 压缩比更高,但压缩速度较慢;
  • 文件扩展名为 .xz
xz file
unxz file.xz

5. zip / unzip

  • 常用于 Windows 系统;
  • 支持压缩多个文件/目录;
zip archive.zip file1 file2
unzip archive.zip

6. zcat

  • 查看 .gz 文件内容(无需解压);
zcat file.gz

三、打包与解包工具

1. tar:打包与配合压缩

常见参数:

参数含义
-c创建打包文件
-x解包
-v显示过程
-f指定文件名
-z调用 gzip
-j调用 bzip2
-J调用 xz

示例:

# 打包目录
tar -cvf archive.tar mydir/

# 打包并用 gzip 压缩
tar -czvf archive.tar.gz mydir/

# 解压
tar -xzvf archive.tar.gz

2. split:大文件分割工具

  • 将大文件拆分为多个小文件;
  • 默认以 1000 行为单位分割,可使用 -b 指定字节数;
split -b 10M bigfile.iso part_

# 恢复合并(以 cat 为例)
cat part_* > bigfile.iso

四、小结

  • 使用 locate 查找快捷,find 功能更强;
  • xargs 可提升处理效率;
  • 打包首选 tar,压缩可选 gzip/xz/zip
  • 多个工具可组合使用,如:
find . -name "*.log" | tar -czvf logs.tar.gz -T -
  • 压缩日志、备份目录、文件分发常用场景需掌握。