Rozpakuj i usuń wszystkie pliki .gz w katalogu - Linux

81

Mam katalog. Zawiera około 500 KB plików .gz.

Jak mogę rozpakować wszystkie pliki .gz w tym katalogu i usunąć pliki .gz?

user2247643
źródło
.gzPlik nie musi być koniecznie archiwum. W takim przypadku nie miałbyś nic do usunięcia po wykonaniu gzip -d file.gz.
devnull
Głosuję za zamknięciem tego pytania jako niezwiązanego
Shankar Damodaran

Odpowiedzi:

169

To powinno wystarczyć:

gunzip *.gz
Adrian Dunn
źródło
1
... chyba że powoduje to błąd „zbyt duży”. W takim przypadku będziesz chciał użyć czegoś takiego, jak find "$dir" -maxdepth 1 -name '*.gz' -print0 | xjobs -0 -l50 -v2 gunzipograniczyć wystąpienia do 50 argumentów każdy (i uruchomić je równolegle).
Toby Speight
22

@techedemic jest poprawne, ale brakuje „.” aby wspomnieć o bieżącym katalogu, a to polecenie przechodzi przez wszystkie podkatalogi.

find . -name '*.gz' -exec gunzip '{}' \;
elhaj
źródło
19

Oczywiście jest na to więcej niż jeden sposób.

    # 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

Jestem pewien, że są też inne sposoby, ale ten jest prawdopodobnie najprostszy.

Aby go usunąć, po prostu zrób rm -rf *.gzw odpowiednim katalogu

techedemiczny
źródło
3

Wypakuj wszystkie pliki gz w bieżącym katalogu i jego podkatalogach:

 find . -name "*.gz" | xargs gunzip 
Jokerius
źródło
3

Jeśli chcesz wyodrębnić pojedynczy plik, użyj:

gunzip plik.gz

Rozpakuje plik i usunie plik .gz.

Neelam
źródło
1
for foo in *.gz
do
  tar xf "$foo"
  rm "$foo"
done
Steven Penny
źródło
0

Próbować:

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

Więc spróbuj:

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

Spowoduje to rozpakowanie wszystkich plików .tar.gz w bieżącym katalogu, a następnie usunięcie wszystkich plików .tar.gz. Jeśli chcesz uzyskać wyjaśnienie, znak „|” pobiera standardowe wyjście polecenia przed nim i używa go jako wejścia standardowego polecenia po nim. Użyj „man command ” bez cudzysłowów, aby dowiedzieć się, co robią te polecenia i argumenty. Możesz też poszukać informacji online.

user2921779
źródło