Linux 将多个子目录 gzip 压缩到单独的档案中?

Linux 将多个子目录 gzip 压缩到单独的档案中?

我怎样才能将子目录压缩到单独的档案中?

例子:

directory
 subdir1
 subdir2

应该创建 subdir1(.tar).gz 和 subdir2(.tar).gz

答案1

根据您的要求,这个小脚本似乎是您的最佳选择:

cd directory
for dir in */
do
  base=$(basename "$dir")
  tar -czf "${base}.tar.gz" "$dir"
done

它可以正确处理名称中带有空格的目录。

答案2

这个怎么样: find * -maxdepth 0 -type d -exec tar czvf {}.tar.gz {} \;

解释:您对当前目录中的所有项目运行 find。Maxdepth 0 使其不会递归到给定的参数以下。(在这种情况下 *,或当前目录中的所有项目)“-type”的 'd' 参数仅匹配目录。然后 exec 对匹配的内容运行 tar。({} 被匹配的文件替换)

答案3

这将为 blah 目录中的每个文件创建一个名为 blah.tar.gz 的文件。

$ cd directory
$ for dir in `ls`; do tar -cvzf ${dir}.tar.gz ${dir}; done

如果目录中不仅仅有目录(即还有文件,因为 ls 将返回目录中的所有内容),那么请使用以下命令:

$ cd directory
$ for dir in `find . -maxdepth 1 -type d  | grep -v "^\.$" `; do tar -cvzf ${dir}.tar.gz ${dir}; done

findgrep -v 排除默认显示在命令中的当前目录。

相关内容