Как рекурсивно сжать файлы bzip2 в папке в один файл bz2

Как рекурсивно сжать файлы bzip2 в папке в один файл bz2

У меня возникла следующая проблема: мне нужно найти все файлы с определенным именем и заархивировать их все в один 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 ...).

Связанный контент