Answers:
鉴于您的要求,此小脚本似乎是您的最佳选择:
cd directory
for dir in */
do
base=$(basename "$dir")
tar -czf "${base}.tar.gz" "$dir"
done
它可以正确处理名称中带有空格的目录。
这个怎么样: find * -maxdepth 0 -type d -exec tar czvf {}.tar.gz {} \;
说明:您在当前目录中的所有项目上运行查找。Maxdepth 0使其不递归低于给定的参数。(在这种情况下,*或当前目录中的所有项目)“ -type”的'd'参数仅与目录匹配。然后exec在任何匹配项上运行tar。({}被匹配文件替换)
for dir in `find * -maxdepth 0 -type d`; do tar -cvzf ${dir}.tar.gz ${dir}; done
这将为名为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
grep -v排除当前目录,find
默认情况下该目录将显示在命令中。
for dir in *