我正在寻找一个命令,它将使用反映原始文件夹名称的每个归档的名称分别压缩目录中的每个文件夹。我知道
tar czvf example.tar.gz example /
将压缩整个文件夹。但是,我还没有找到批量存档的命令。有这样的命令吗?
答案 0 :(得分:1)
find -mindepth 1 -maxdepth 1 -type d -exec tar czf {}.tar.gz {} \;
请注意,我使用了-maxdepth 1
。
考虑目录结构:
.
|-- a
| `-- x
|-- b
`-- c
如果没有-maxdepth 1
,您将获得a.tar.gz
和a/x.tar.gz
。 a.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 {} \;
答案 1 :(得分:1)
for f in `find -mindepth 1 -maxdepth 1 -type d`; do
tar -czf $f.tar.gz $f
done
答案 2 :(得分:0)
好的,这是我提出的最终命令,然后使用bzip2进行压缩以获得最大压缩
find -mindepth 1 -maxdepth 1-type d -exec tar cjf'{}'。tar.bz2'{}'\;
谢谢大家!