Use a opção --exclude=pattern
:
tar --exclude='*.jpg' --exclude='*.png' --exclude='*.bmp' --exclude='*.gif' -cvf tar-filename.tar folder
Eu quero tar todos os arquivos em um diretório e seus subdiretórios que NÃO terminam em .jpg, .bmp, .gif ou png.
Então, dadas as seguintes pastas e arquivos:
foo/file.txt
foo/file.gif
foo/bar/file
foo/bar/image.jpg
Eu quero tar apenas os arquivos arquivo.txt e arquivo . file.gif e image.jpg devem ser ignorados. Eu também gostaria de manter a estrutura de pastas.
Meu primeiro pensamento foi canalizar os resultados do comando find em conjunto com grep -v ".jpg | .gif | .bmp.png" para um arquivo de texto e, em seguida, usar o argumento tar include para alimentá-lo dessa lista de arquivos.
No entanto, os resultados do comando grepped find também contêm diretórios (no exemplo acima, seria "foo" e "foo / bar"), e quando um diretório é alimentado para tar, ele inclui todos os arquivos diretório, então eu acabaria com um arquivo tar contendo todos os arquivos - não o que eu quero.
Existe alguma maneira de impedir o achado de gerar diretórios? Existe uma maneira muito mais fácil de abordar isso?