Use a opção --exclude
:
tar czvf myarchive.tar.gz --exclude=\*.{jpg,gif,png,wmv,flv,tar.gz,zip} rootdir
como eu faço tar.gz
de tudo, exceto jpg/gif/png/wmv/flv/zips
, recursivamente, via shell Unix?
Use a opção --exclude
:
tar czvf myarchive.tar.gz --exclude=\*.{jpg,gif,png,wmv,flv,tar.gz,zip} rootdir
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.
find ./ -type f | egrep -v "\.(jpg|gif|png|wmv|flz|zips)$" | xargs tar -czf filename.tgz