Repository 32bit  Forum
Repository 64bit  Wiki

tar, comprimere singolarmente i file di una directory [RIS]

Postate qui per tutte le discussioni legate a Linux in generale.

Moderatore: Staff

Regole del forum
1) Citare sempre la versione di Slackware usata, la versione del Kernel e magari anche la versione della libreria coinvolta. Questi dati aiutano le persone che possono rispondere.
2) Per evitare confusione prego inserire in questo forum solo topic che riguardano appunto Gnu/Linux in genere, se l'argomento è specifico alla Slackware usate uno dei forum Slackware o Slackware64.
3) Leggere attentamente le risposte ricevute
4) Scrivere i messaggi con il colore di default, evitare altri colori.
5) Scrivere in Italiano o in Inglese, se possibile grammaticalmente corretto, evitate stili di scrittura poco chiari, quindi nessuna abbreviazione tipo telegramma o scrittura stile SMS o CHAT.
6) Appena registrati è consigliato presentarsi nel forum dedicato.

La non osservanza delle regole porta a provvedimenti di vari tipo da parte dello staff, in particolare la non osservanza della regola 5 porta alla cancellazione del post e alla segnalazione dell'utente. In caso di recidività l'utente rischia il ban temporaneo.

tar, comprimere singolarmente i file di una directory [RIS]

Messaggioda tgmx » mar mag 22, 2012 10:56

Ciao a tutti,

sto cercando di fare un piccolo script, lanciato da cron che comprima i file che si trovano in una directory creando un tar.gz singolo per ogni file.

Es:
se la directory contiene i file:
a.dat
b.dat
c.dat

vorrei ottenere con un solo passaggio:
a.tar.gz
b.tar.gz
c.tar.gz

e se proprio vogliamo esagerare non sarebbe male eliminare l'originale dopo la conpressione...

Avete idee... :-)
Ultima modifica di tgmx il mer mag 23, 2012 7:44, modificato 1 volta in totale.
Avatar utente
tgmx
Linux 3.x
Linux 3.x
 
Messaggi: 1330
Iscritto il: ven apr 28, 2006 13:40
Località: Ancona
Slackware: 13.37
Desktop: KDE 4

Re: tar, comprimere singolarmente i file di una directory

Messaggioda conraid » mar mag 22, 2012 11:39

una cosa simile
Codice: Seleziona tutto
for FILE in "*"; do tar -czf $(basename $FILE).tar.gz $FILE; done

anche se migliorabile, per eliminare ti basta rm $FILE

prova così
Codice: Seleziona tutto
for FILE in "*"; do
tar -czf $(basename $FILE).tar.gz $FILE
rm $FILE
done
Avatar utente
conraid
Staff
Staff
 
Messaggi: 12022
Iscritto il: mer lug 13, 2005 23:00
Località: Livorno
Nome Cognome: Corrado Franco
Slackware: current

Re: tar, comprimere singolarmente i file di una directory

Messaggioda targzeta » mar mag 22, 2012 15:50

Per eliminare i file basta questa opzione di tar:
Codice: Seleziona tutto
  --remove-files
              remove files after adding them to the archive
però, parliamone, che senso ha creare un archivio con dentro solo un file? Non è più semplice zipparlo se vuoi ridurne lo spazio? Cioé, un archivio è un archivio...no?

Emanuele
Linux Registered User #454438
Se pensi di essere troppo piccolo per fare la differenza, prova a dormire con una zanzara -- Dalai Lama
20/04/2013 - Io volevo Rodotà
Avatar utente
targzeta
Iper Master
Iper Master
 
Messaggi: 6185
Iscritto il: gio nov 03, 2005 14:05
Località: Carpignano Sal. (LE) <-> Pisa
Nome Cognome: Emanuele Tomasi
Slackware: current
Kernel: latest stable
Desktop: IceWM

Re: tar, comprimere singolarmente i file di una directory

Messaggioda tgmx » mar mag 22, 2012 20:02

conraid ha scritto:una cosa simile
Codice: Seleziona tutto
for FILE in "*"; do tar -czf $(basename $FILE).tar.gz $FILE; done

anche se migliorabile, per eliminare ti basta rm $FILE

prova così
Codice: Seleziona tutto
for FILE in "*"; do
tar -czf $(basename $FILE).tar.gz $FILE
rm $FILE
done


Grazie.
Ho dovuto aggiungere le virgolette su:
Codice: Seleziona tutto
basename "$FILE"

altrimenti basename dava errore.

Così però mi crea un unico archivio con tutti i file dentro.
Apparentemente il FOR non scorre il contenuto della directory ma restituisce l'elenco dei file mettendoli tutti dentro la variabile FILE in una sola volta.
Avatar utente
tgmx
Linux 3.x
Linux 3.x
 
Messaggi: 1330
Iscritto il: ven apr 28, 2006 13:40
Località: Ancona
Slackware: 13.37
Desktop: KDE 4

Re: tar, comprimere singolarmente i file di una directory

Messaggioda cymon » mer mag 23, 2012 1:03

Non è più carino:
Codice: Seleziona tutto
find . -exec tar czvf {}.tar.gz {} \; ?


comunque il tar di un singolo file è effettivamente inutile, a questo punto, se proprio serve, meglio partire direttamente con gzip.
Avatar utente
cymon
Linux 2.4
Linux 2.4
 
Messaggi: 430
Iscritto il: ven gen 05, 2007 1:40
Località: Milano
Slackware: 13.1
Kernel: 2.6.33.4-smp
Desktop: Fluxbox

Re: tar, comprimere singolarmente i file di una directory

Messaggioda tgmx » mer mag 23, 2012 7:44

cymon ha scritto:Non è più carino:
Codice: Seleziona tutto
find . -exec tar czvf {}.tar.gz {} \; ?


comunque il tar di un singolo file è effettivamente inutile, a questo punto, se proprio serve, meglio partire direttamente con gzip.


Perfetto,
così funziona. Grazie.

Per quanto riguarda gzip, l'ho appena provato in questo modo:
Codice: Seleziona tutto
find ./*.dat -exec gzip {} \;


ed effettivamente lavora meglio dato che elimina anche l'originale.

Grazie a tutti!
Avatar utente
tgmx
Linux 3.x
Linux 3.x
 
Messaggi: 1330
Iscritto il: ven apr 28, 2006 13:40
Località: Ancona
Slackware: 13.37
Desktop: KDE 4

Re: tar, comprimere singolarmente i file di una directory [R

Messaggioda conraid » mer mag 23, 2012 9:25

per basename si vede che hai nomi di file con spazi, per il for forse c'è qualche errore di sintassi

se usi gzip, ti basta gzip *
Avatar utente
conraid
Staff
Staff
 
Messaggi: 12022
Iscritto il: mer lug 13, 2005 23:00
Località: Livorno
Nome Cognome: Corrado Franco
Slackware: current

Re: tar, comprimere singolarmente i file di una directory [R

Messaggioda tgmx » mer mag 23, 2012 9:33

Grande!
Sempre piu' facile... gzip fa miracoli ed io lo ignoravo completamente.
Avatar utente
tgmx
Linux 3.x
Linux 3.x
 
Messaggi: 1330
Iscritto il: ven apr 28, 2006 13:40
Località: Ancona
Slackware: 13.37
Desktop: KDE 4


Torna a Gnu/Linux in genere

Chi c’è in linea

Visitano il forum: Bing [Bot], Google [Bot] e 1 ospite

cron