我有一个all_folders
包含 5 个文件夹的文件夹:
./all_folders
./all_folders/folder1
./all_folders/folder2
./all_folders/folder3
./all_folders/folder4
./all_folders/folder5
我可以使用一个命令一次性压缩所有这些文件夹吗?我想进入all_folders
目录,然后执行命令,以便压缩该目录中的各个文件夹。
预期输出是
当我做
ls
,那么all_folders
我应该有 10 个目录。 5 个未压缩的和 5 个压缩的。
答案1
cd
进入all_folders
,然后运行
for i in folder1 folder2 folder3 folder4 folder5; do tar czf $i.tar.gz $i; done
答案2
有点不清楚你想要实现什么目标。我正在运行仅应在此处压缩子目录的用例。
首先,转到包含目录集合的目录,然后:
find -maxdepth 1 -type d | {
while read dir; do
if [ ! "x${dir#*/}" = "x." ]; then
tar cJf ${dir#*/}.tar.xz ${dir#*/};
fi;
done
}
这与zsh
.要进行测试,请在 ,echo
前面放置一个tar
, 来查看命令是否签出等。
然而,像这样收集档案通常是不可取的。通常,您需要压缩整个集合、对这些文件所在的驱动器使用透明压缩,或者使用传输压缩(X-DEFLATE
例如使用 HTTP)。
请注意,您最终不会得到“压缩目录”,而是得到“压缩存档”,这些东西是不可互换的,因为存档本身就是文件,而目录只是文件索引节点数据报。