2011-01-07 13 views
13

Mi chiedo se sia possibile creare un file zip dalle cartelle. Ho una cartella e in queste cartelle ci sono quattro cartelle e lì, ci sono diversi tipi di file. Ora voglio comprimere queste quattro cartelle in modo ricorsivo con i loro file.Creazione di file zip da cartelle

Ho provato save() e gzip() ma non fanno quello che voglio.

Qualcuno ha un suggerimento per me?

risposta

6

Il pacchetto Rcompression di Omegahat può farlo. Ecco un esempio minimo:

library(Rcompression) 
d <- "C:/my_data" 
files <- list.files(d, recursive=TRUE) 
zip("myarchive.zip", files=paste(d, files, sep="/"), altNames=files) 

Vedere ?zip per ulteriori esempi.

+0

Grazie per la risposta. Ci proverò. –

+0

Questo esempio mi ha aiutato soprattutto nel mio caso. Grazie! –

+2

Usa 'file.path' piuttosto che' paste (..., sep = "/") '. –

1

È possibile cercare suggerimenti nelle origini di odfWeave package.

Se si carica la libreria e si digita odfWeave, si otterrà il sorgente, che non è troppo lungo e implementa zippare e decomprimere anche con le chiamate di sistema.

Da fonti theese, si potrebbe fare qualcosa di simile:

filename = '' # set archive filename 
loc = ''  # set location, if not done before 
setwd(loc) 
zipCmd = paste("zip -r ", filename, " .", sep='') 
system(zipCmd, invisible = TRUE) 

Naturalmente, zip deve essere installato.

+0

Grazie per la risposta. Ci proverò. –

18

Impostare il comando tar. Anche se non è zip, un file tar compresso è altrettanto valido.

tarfile <- 'newfile.tgz' 
tar(tarfile,'/path/of/dir/to/tar/up',compression='gzip') 
+4

Ho dimenticato di menzionare che tar è anche multipiattaforma. – Jeff

+3

+1 Non pensavo che fosse nemmeno possibile in R! –

+0

Grazie per la risposta. Sembra buono ma nel mio caso ho bisogno di .zip. Ma tengo a mente :) –

Problemi correlati