tar - exclui certos arquivos

3

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?

    
por Alan 26.06.2011 / 17:52

1 resposta

5

Use a opção --exclude=pattern :

tar --exclude='*.jpg' --exclude='*.png' --exclude='*.bmp' --exclude='*.gif' -cvf tar-filename.tar folder
    
por 26.06.2011 / 18:05