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?
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?
for foo in *.gz
do
tar xf "$foo"
rm "$foo"
done
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
Questo dovrebbe farlo:
gunzip *.gz
... 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). –
estrarre tutti i file gz nella directory corrente e delle sue sottodirectory:
find . -name "*.gz" | xargs gunzip
@techedemic è corretto ma manca '.' per menzionare la directory corrente, e questo comando passa attraverso tutte le sottodirectory.
find . -name '*.gz' -exec gunzip '{}' \;
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.
Se si desidera estrarre un singolo uso di file:
gunzip file.gz
Sarà estrarre il file e rimuovere il file .gz.
risposta duplicata da questa discussione: https://stackoverflow.com/a/20103343/1847249 –
Un file '.gz' non deve necessariamente essere un archivio. In tal caso non avresti nulla da eliminare eseguendo 'gzip -d file.gz'. – devnull
Sto votando per chiudere questa domanda come off-topic perché appartiene a http://unix.stackexchange.com/ –