0
点赞
收藏
分享

微信扫一扫

Linux系统find + xargs的妙用:海量子目录各自压缩

可以使用以下命令将当前目录下的每个子目录分别压缩为独立的zip文件:

find . -maxdepth 1 -mindepth 1 -type d -print0 | xargs -0 -I {} sh -c 'zip -r "{}.zip" "{}"'

步骤解释:

  1. 查找子目录:

find . -maxdepth 1 -mindepth 1 -type d

  • -maxdepth 1:仅搜索当前目录,不进入子目录。
  • -mindepth 1:排除当前目录自身(.)。
  • -type d:仅匹配目录。
  1. 处理特殊字符:

-print0 | xargs -0

  • -print0:以null字符分隔结果,避免空格/特殊字符导致的问题。
  • -0:让xargs接收null分隔的输入。
  1. 构建压缩命令:

-I {} sh -c 'zip -r "{}.zip" "{}"'

  • -I {}:将每个目录路径替换到{}的位置。
  • sh -c:执行包含空格处理的命令。
  • zip -r "{}.zip" "{}":递归压缩目录,双引号确保路径中的空格被正确处理。

效果示例:

  • 目录 project ➔ 生成 project.zip
  • 含空格的目录 my data ➔ 生成 my data.zip

注意: 所有生成的zip文件会保存在当前目录中。如果需要在压缩后删除原目录,可在zip命令后添加&& rm -rf "{}",但请谨慎操作。


举报

相关推荐

0 条评论