2009-09-20 63 views
0

我正在查找一个命令,它将分别压缩目录中的每个文件夹,每个文件夹的名称反映了原始文件夹名称。我知道命令批量压缩目录下的所有文件/文件夹

焦油czvf example.tar.gz例如/

将压缩整个文件夹。但是,我还没有找到批量归档的命令。有这样的命令吗?

+1

是的,我在你的未来看到find,xargs和sed。 – 2009-09-20 20:02:37

+0

是的,你sed它;) – undoIT 2009-09-21 00:24:43

回答

1
find -mindepth 1 -maxdepth 1 -type d -exec tar czf {}.tar.gz {} \; 

请注意,我用-maxdepth 1

考虑目录结构:

. 
|-- a 
| `-- x 
|-- b 
`-- c 

没有-maxdepth 1你会得到a.tar.gza/x.tar.gza.tar.gz将包含x和其中的所有文件;而a/x.tar.gz将包含x及其文件。但是,如果这不是目标,它会将这些项目存储在x中两次。

更新使用-mindepth 1为好,因为当外界的example/example.tar.gz将创建上运行。

更新 ...和bzip2的:

find -mindepth 1 -maxdepth 1 -type d -exec tar cjf {}.tar.bz2 {} \; 
+0

没有-mindepth 1,它不会创建当前目录的存档? – 2009-09-20 20:17:41

+0

我也这么认为,但是当我测试它时,我没有看到发生这种情况。 – opello 2009-09-20 20:35:26

+0

但是如果你在“example /”中执行它,它不会,如果你不这样做,它会。将更新。 – opello 2009-09-20 20:38:12

1
for f in `find -mindepth 1 -maxdepth 1 -type d`; do 
    tar -czf $f.tar.gz $f 
done 
+0

谢谢!正是我在找什么。 – undoIT 2009-09-20 23:49:16

+0

好的,还有一个问题。如果我想压缩到bzip2,那么完整的命令是什么? – undoIT 2009-09-21 00:18:10

0

好了,这里就是我想出了存档,然后用bzip2压缩的最大压缩

发现-mindepth最后的命令1 -maxdepth 1 -type d -exec tar cjf'{}'。tar.bz2'{}'\;

谢谢大家!

相关问题