Como tar.gz tudo menos .jpg / gif / png / wmv / flv / tar.gz / zip?

4

como eu faço tar.gz de tudo, exceto jpg/gif/png/wmv/flv/zips , recursivamente, via shell Unix?

    
por shA.t 10.12.2009 / 01:43

3 respostas

5

Use a opção --exclude :

tar czvf myarchive.tar.gz --exclude=\*.{jpg,gif,png,wmv,flv,tar.gz,zip} rootdir
    
por 10.12.2009 / 01:59
2
find -type f -a ! \( \
                     -name '*.jpg' -o \
                     -name '*.gif' -o \
                     -name '*.png' -o \
                     -name '*.wmv' -o \
                     -name '*.flv' -o \
                     -name '*.tar.gz' -o \
                     -name '*.zip' \) \
 | xargs tar rvfz files.tgz

Eu usei várias linhas para facilitar a edição posterior caso você tenha feito isso em um script de shell ou função de shell.

Eu uso o sinalizador -r para tar, caso o número de arquivos exceda uma chamada em xargs. Desta forma, você não pode exceder o buffer de argumentos para tar.

    
por 10.12.2009 / 01:58
2

  find ./ -type f | egrep -v "\.(jpg|gif|png|wmv|flz|zips)$" | xargs tar -czf filename.tgz
    
por 10.12.2009 / 01:57

Tags