并行焦油

并行焦油

我有一个包含数百个子目录的目录。我想要 tar 并压缩每个子目录并将生成的文件命名为<currentDirName>.tar.bz2.

我已经做好了:

find ./dir -type f -print0 | xargs -0 -n1 -P100 bunzip2

一次解压100个文件。 (我做海洋建模,所以我的机器非常强大,有很多四核。)我不知道如何做类似上面的事情,同时包含有关动态命名压缩存档文件的信息。我不想tar cfj dir.tar.bz2 dir为每一个人都做。

我可以通过 find 或 parallel 将每个目录名自动用作 tar 文件名,以便一次可以完成 100 个或更多,就像上面的 Bunzip 命令一样?

感谢您的意见。

....彼得

答案1

以下bash一行将大致完成您所描述的操作,将每个目录放入其自己的 tarball 中。

for d in dir/*/; do { tar -cj "$d" > "${d%/}.tar.bz2" ; } & done ; while [ "$(jobs)" ] ; do fg &>/dev/null ; done ; echo done

相关内容