Command line 大容量压缩目录下所有文件/文件夹的命令

Command line 大容量压缩目录下所有文件/文件夹的命令,command-line,command,archive,bulk,compression,Command Line,Command,Archive,Bulk,Compression,我正在寻找一个命令,它将分别压缩目录中的每个文件夹,每个归档文件的名称将反映原始文件夹的名称。我知道 tar czvf example.tar.gz示例/ 将压缩整个文件夹。但是,我还没有找到批量归档的命令。有这样的命令吗 find -mindepth 1 -maxdepth 1 -type d -exec tar czf {}.tar.gz {} \; 请注意,我使用了-maxdepth 1 考虑目录结构: . |-- a | `-- x |-- b `-- c 没有-maxdepth

我正在寻找一个命令,它将分别压缩目录中的每个文件夹,每个归档文件的名称将反映原始文件夹的名称。我知道

tar czvf example.tar.gz示例/

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

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
,因为在
示例/
之外运行时,也会创建一个
示例.tar.gz

更新。。。对于bzip2:

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

好的,这是我最后一个用来存档的命令,然后用bzip2压缩以获得最大压缩

find-mindepth 1-maxdepth 1-type d-exec tar cjf'{}'.tar.bz2'{}'\


谢谢大家

是的,我看到了find、xargs和sed在你的未来。如果没有-mindepth 1,它不会为当前目录创建存档吗?我也这么认为,但当我测试它时,我没有看到这种情况发生。啊,但是如果你在“example/”中执行它,它不会,如果你没有,它会。将更新。是否可以调整该命令以使bzip2用于压缩?@opello:既然find命令正在查找“”,它不会创建一个名为“…tar.gz”的文件吗?默认情况下ls不会显示这些。谢谢!正是我想要的。好的,还有一个问题。如果我想压缩到bzip2,完整的命令是什么?
for f in `find -mindepth 1 -maxdepth 1 -type d`; do
    tar -czf $f.tar.gz $f
done