Linux 中如何使用 zip 压缩多个独立分散的文件

作者:袖梨 2026-08-07

zip archive.zip file1.txt file2.log config.json 支持绝对/相对路径,空格文件名需加引号;可用通配符、filelist.txt 或 find 辅助批量压缩;注意权限、路径及 -m 选项风险。

直接列出所有文件名,用空格隔开,就能一次性压缩多个不相关的文件。

压缩多个独立文件的基本写法

不需要它们在同一个目录或有共同前缀,只要路径正确、你有读取权限,就可以压进一个 zip 包里:

  1. 语法zip archive.zip file1.txt file2.log config.json
  2. 文件可以是绝对路径或相对路径,比如:zip backup.zip /home/user/doc.pdf ./notes.md ../data.csv
  3. 如果文件名含空格,用引号包裹:zip archive.zip "my report.pdf" "config file.ini"

避免漏文件的小技巧

当要压缩的文件较多、位置分散时,手动列容易出错。可以用通配符或命令组合辅助:

  1. 同一目录下匹配多个类型:zip archive.zip *.txt *.log
  2. 跨目录但路径已知:把文件路径存入临时文件再读取:zip archive.zip $(cat filelist.txt)
  3. find 按条件找文件(例如最近修改的):find /path -name "*.conf" -mtime -7 | xargs zip archive.zip

常见问题与处理

执行失败通常是因为权限或路径问题:

  1. “No such file or directory”:检查每个文件是否存在,路径是否拼写正确,特别是相对路径的起始位置
  2. “Permission denied”:确认你对这些文件有读取权限;若需压缩系统文件,加 sudo(谨慎使用)
  3. 同名文件被覆盖?:zip 默认不会报错,而是保留后加入的那个;可用 unzip -l archive.zip 查看内容确认

想边压边删原文件?

加上 -m 选项可移动式压缩,即压缩完成后自动删除源文件:

  1. zip -m archive.zip file1 file2 file3
  2. 注意:-m 不支持目录,只适用于普通文件;且不可逆,操作前建议先备份关键数据

相关文章

精彩推荐