我怎样才能将子目录压缩到单独的档案中?
例子:
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
find
grep -v 排除默认显示在命令中的当前目录。