Como excluir arquivos do arquivo TAR usando expressões regulares?

8

Eu tenho uma pergunta simples, mas não consigo encontrar ou resolver a resposta. Eu quero fazer um arquivo tar, mas eu quero excluir alguns arquivos dele usando a expressão regular.

Exemplo do arquivo a excluir é o seguinte: 68x640X480.jpg

Eu tentei isso sem sorte:

tar cvf test.tar --exclude=[0-9]+x[0-9X]+\.jpg /data/foto

Alguém pode ajudar?

    
por Frodik 12.10.2011 / 10:31

2 respostas

10

Você pode usar algumas ferramentas adicionais, como find e egrep :

find directory/ -type f -print | egrep -v '[0-9]+x[0-9X]+\.jpg' | tar cvfz directory.tar.gz -T -

A desvantagem do método mencionado acima é que ele não funcionará para todos os nomes de arquivos possíveis. Outra oportunidade é usar a funcionalidade de exclusão interna de tar :

tar -czvf directory.tar.gz --exclude='*x*X*.jpg' directory

Infelizmente, o segundo método não funciona com expressões regulares, mas apenas com curingas.

    
por 12.10.2011 / 10:58
0

Talvez devesse experimentar o cpio

link

Ele lê a lista de arquivos e faz o arquivamento. Você pode gerar uma lista de arquivos usando sed como indicado abaixo.

ls |sed   '/[0-9]*x[0-9]*X.*/d' >/tmp/files

Você pode usá-lo como entrada para o cpio.

    
por 12.10.2011 / 10:50