Linux gzip多个子目录到单独的档案?

我怎么能够将子目录压缩到单独的档案?

例:

directory subdir1 subdir2 

应该创buildsubdir1(.tar).gz和subdir2(.tar).gz

根据您的要求,这个小脚本似乎是您最好的select:

 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 {} \; \; find * -maxdepth 0 -type d -exec tar czvf {}.tar.gz {} \; \;

说明:您在当前目录中的所有项目上运行查找。 Maxdepth 0使它不会低于给定的参数。 (在这种情况下*,或当前目录中的所有项)types的“d”参数只与目录匹配。 然后执行任何比赛运行焦油。 ({}被replace为匹配的文件)

这将为名为blah的目录中的每个文件创build一个名为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命令中显示的当前目录。