我有一个包含数百个子目录的目录。我想要 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