2013-08-01 17 views
10

Ho una directory con molte sottodirectory. In alcune di queste sottodirectory ho file con estensione *.asc e alcuni con *.xdr.tar/gzip esclusi determinati file

Desidero creare un file tarball/gzip SINGLE che mantenga la struttura della directory ma escluda tutti i file con l'estensione *.xdr.

Come posso fare questo?

Ho fatto qualcosa come find . -depth -name *.asc -exec gzip -r9 {} + ma questo gzips ogni file *.asc individualmente che non è quello che voglio fare.

risposta

23

È necessario utilizzare l'opzione --exclude:

tar -zc -f test.tar.gz --exclude='*.xdr' *

+0

Qual è la sintassi per più file? Ho provato * .xdr, *. Pdf ma ho fallito –

+2

l'ho fatto aggiungendo --exclude di nuovo. '--exclude = '*. pdf' --exclude = '*. mp4'' –

1

gzip gestirà sempre i file singolarmente. Se vuoi un archivio in bundle devi prima tarare i file e poi gzip il risultato, quindi ti ritroverai con un file .tar.gz o .tgz in breve.

Per ottenere un migliore controllo su quello che stai facendo è possibile find i file prima utilizzando il comando già inviato (con -print invece di comando gzip), metterli in un file e utilizzare questo file (= filelist. txt) per uinstruct tar con quello di archiviare

tar -T filelist.txt -c -v -f myarchive.tar 
+0

va bene. Come posso farlo con tar? – user1654183

+0

Bene, puoi dare un'occhiata a 'man tar' !? – user1146332

+0

Penso che qualcosa del genere funzionerà: tar -cf src.tar --exclude = '*. Xdr' src – user1654183

Problemi correlati