Tar/gzip исключая определенные файлы

У меня есть каталог со многими подкаталогами. В некоторых из этих подкаталогов есть файлы с расширением *.asc, а некоторые - с *.xdr.

Я хочу создать SINGLE файл tarball/gzip, который поддерживает структуру каталогов, но исключает все файлы с расширением *.xdr.

Как я могу это сделать?

Я сделал что-то вроде find . -depth -name *.asc -exec gzip -r9 {} +, но это gzips каждый *.asc файл индивидуально, что не то, что я хочу сделать.

Ответ 1

Вам нужно использовать опцию --exclude:

tar -zc -f test.tar.gz --exclude='*.xdr' *

Ответ 2

gzip всегда будет обрабатывать файлы по отдельности. Если вам нужен пакетный архив, вам придется сначала деформировать файлы, а затем gzip результат, поэтому вы в конечном итоге получите файл .tar.gz или .tgz.

Чтобы лучше контролировать то, что вы делаете, вы можете find файлы сначала использовать команду, которую вы уже разместили (с -print insted из команды gzip), поместить их в файл и использовать этот файл (= файл списка .txt) для uinstruct tar с архивами

tar -T filelist.txt -c -v -f myarchive.tar