![如何将文件夹中的文件递归 bzip2 压缩为单个 bz2 文件](https://linux22.com/image/1530887/%E5%A6%82%E4%BD%95%E5%B0%86%E6%96%87%E4%BB%B6%E5%A4%B9%E4%B8%AD%E7%9A%84%E6%96%87%E4%BB%B6%E9%80%92%E5%BD%92%20bzip2%20%E5%8E%8B%E7%BC%A9%E4%B8%BA%E5%8D%95%E4%B8%AA%20bz2%20%E6%96%87%E4%BB%B6.png)
我遇到了这个问题,我需要找到具有特定名称的所有文件并将它们全部压缩成一个 zip 文件。
我厌倦了这样的事情
find . -not -name "*bz2" -name "myname*" -exec bzip2 test.bz2 {} +;
and
find . -not -name "*bz2" -name "myname*" -exec bzip2 test.bz2 {} /;
以及许多其他文件,但它总是将它们分开压缩。需要将其压缩为 bzip 文件。
答案1
Bzip 无法将多个文件合并为一个存档(如 ZIP)。Bzip 仅用于压缩单个文件(如 Gzip)。
如果要在压缩档案中包含多个文件,请先使用 Tar 创建多个文件的档案,然后对该单个档案进行 bzip 压缩。
您可以使用:
find . -not -name "*bz2" -name "myname*" | xargs tar -jcvf archive.tar.bz2
xargs
将会把找到的所有文件名放在 Tar 命令之后(tar 的正常语法是tar -jcvf archivename.tar.bz2 file1 file2 file3 ...
)。