可以使用以下命令将当前目录下的每个子目录分别压缩为独立的zip文件:
find . -maxdepth 1 -mindepth 1 -type d -print0 | xargs -0 -I {} sh -c 'zip -r "{}.zip" "{}"'步骤解释:
- 查找子目录:
find . -maxdepth 1 -mindepth 1 -type d- -maxdepth 1:仅搜索当前目录,不进入子目录。
- -mindepth 1:排除当前目录自身(- .)。
- -type d:仅匹配目录。
- 处理特殊字符:
-print0 | xargs -0- -print0:以- null字符分隔结果,避免空格/特殊字符导致的问题。
- -0:让- xargs接收- null分隔的输入。
- 构建压缩命令:
-I {} sh -c 'zip -r "{}.zip" "{}"'- -I {}:将每个目录路径替换到- {}的位置。
- sh -c:执行包含空格处理的命令。
- zip -r "{}.zip" "{}":递归压缩目录,双引号确保路径中的空格被正确处理。
效果示例:
- 目录 project➔ 生成project.zip
- 含空格的目录 my data➔ 生成my data.zip
注意: 所有生成的zip文件会保存在当前目录中。如果需要在压缩后删除原目录,可在zip命令后添加&& rm -rf "{}",但请谨慎操作。










