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