2013-04-16 12 views
61

Ho una directory. Ha circa 500K file .gz.Estrai ed elimina tutti .gz in una directory - Linux

Come posso estrarre tutti i file .gz in quella directory ed eliminare i file .gz?

+0

Un file '.gz' non deve necessariamente essere un archivio. In tal caso non avresti nulla da eliminare eseguendo 'gzip -d file.gz'. – devnull

+0

Sto votando per chiudere questa domanda come off-topic perché appartiene a http://unix.stackexchange.com/ –

risposta

1
for foo in *.gz 
do 
    tar xf "$foo" 
    rm "$foo" 
done 
14

C'è più di un modo per farlo ovviamente.

# This will find files recursively (you can limit it by using some 'find' parameters. 
    # see the man pages 
    # Final backslash required for exec example to work 
    find . -name '*.gz' -exec gunzip '{}' \; 

    # This will do it only in the current directory 
    for a in *.gz; do gunzip $a; done 

Sono sicuro che ci sono altri modi, ma questo è probabilmente il più semplice.

E per rimuoverlo, basta fare un rm -rf *.gz nella directory applicabile

129

Questo dovrebbe farlo:

gunzip *.gz 
+1

... a meno che ciò non dia un errore "argmuent too big". In tal caso, ti consigliamo di usare qualcosa come 'find" $ dir "-maxdepth 1 -name '* .gz' -print0 | xjobs -0 -l50 -v2 gunzip' per limitare le istanze a 50 argomenti ciascuna (e per eseguirle in parallelo). –

2

estrarre tutti i file gz nella directory corrente e delle sue sottodirectory:

find . -name "*.gz" | xargs gunzip 
14

@techedemic è corretto ma manca '.' per menzionare la directory corrente, e questo comando passa attraverso tutte le sottodirectory.

find . -name '*.gz' -exec gunzip '{}' \; 
0

Prova:

ls -1 | grep -E "\.tar\.gz$" | xargs -n 1 tar xvfz 

quindi provare:

ls -1 | grep -E "\.tar\.gz$" | xargs -n 1 rm 

Ciò decomprimere tutti i file .tar.gz nella directory corrente e quindi eliminare tutti i file .tar.gz. Se vuoi una spiegazione, il "|" prende lo stdout del comando prima di esso e lo usa come stdin del comando dopo di esso. Utilizzare "man comando" senza le virgolette per capire cosa fanno quei comandi e questi argomenti. Oppure puoi cercare online.

3

Se si desidera estrarre un singolo uso di file:

gunzip file.gz

Sarà estrarre il file e rimuovere il file .gz.

+0

risposta duplicata da questa discussione: https://stackoverflow.com/a/20103343/1847249 –