jak mogę wyodrębnić wiele plików gzip w katalogu i podkatalogach?

11

Próbowałem obu poleceń gzipi gunzippoleceń, ale dostaję jedno z nich

gunzip *.gz 
gzip: invalid option -- 'Y' 

gunzip -S-1800-01-01-000000-g01.h5.gz  
gzip: compressed data not read
 from a terminal. Use -f to force decompression. For help, type: gzip -h

Jeśli wypróbuję tę -fopcję, praca nad jednym plikiem zajmuje bardzo dużo czasu, a polecenie nie zostało wykonane pomyślnie. Czy coś brakuje?

Herman Toothrot
źródło
2
Czy katalog zawiera pliki .gz, których nazwy zaczynają się od łączników, na przykład -Y.something.gz? Jeśli tak, być może trzeba użyć --flagi Gnu, aby upewnić się, że są one traktowane jak nazwy plików, a nie opcje, np.gunzip -- *.gz
steeldriver,
@steeldriver tak Mam kilka plików zaczynających się od -
Herman Toothrot
co spowodowało co najmniej jeden z dwóch problemów.
Herman Toothrot

Odpowiedzi:

16

Możesz użyć poniższego polecenia.

Przejdź do katalogu, w którym znajduje się .gzplik i uruchom polecenie:

for f in *.gz ; do gunzip -c "$f" > /home/$USER/"${f%.*}" ; done

Wyodrębni cały plik z oryginalną nazwą i zapisze go w katalogu osobistym bieżącego użytkownika ( /home/username). Możesz zmienić to gdzieś indziej.

EDYTOWAĆ :

gunzip *.gz

To polecenie również będzie działać. Ale domyślnie zastępuje oryginalny plik.

pl_rock
źródło
Czy przeczytałeś co napisałem w moim pytaniu? gunzip * .gz nie działa dla mnie. Ale pętla for działa, jestem zdziwiony.
Herman Toothrot
ale dla mnie i innych działa również, dlaczego wyświetla się „nieprawidłowa opcja -„ Y ”. myślę, że albo twój format pliku nie jest w porządku, albo brakuje ci czegoś w poleceniu.
pl_rock
4

Opcja nr 1 : rozpakuj wiele plików za pomocą pojedynczego cudzysłowu (krótka wersja)

gunzip '*.gz'

Zauważ, że *.gzsłowo jest wstawiane pomiędzy dwa pojedyncze cudzysłowy, aby powłoka nie rozpoznała go jako znaku wieloznacznego.

Opcja nr 2 : rozpakuj wiele plików za pomocą powłoki dla pętli (długa wersja)

for g in *.gz; do gunzip $g; done

Źródło

EDYTOWAĆ :

Właśnie próbowałem:

gunzip -dk *.gz

i zadziałało.

-ddekompresować i kzachować oryginalne pliki.

Bilal
źródło
sprawdziłeś gunzip ‘*.gz’ to polecenie. nie jestem w stanie uruchomić tego polecenia. daje błąd.
pl_rock
gunzip '*.gz'nie używaj gunzip ‘*.gz’ ( ' 'nie `` `)
Bilal
po prostu kopiuję wklejając twoje polecenie i daje to gzip: *.gz: No such file or directoryrównież nowe, że nie działa. próbowałeś?
pl_rock
Nie działa gunzip '* .gz' gzip: * .gz: Brak takiego pliku lub katalogu
Herman Toothrot
Przepraszam, nie próbowałem tego! Jestem teraz na Windowsie :(
Bilal
0

Użytkownicy systemu Linux:

Użyj poniższego polecenia, aby wyodrębnić minimalną liczbę plików .gz w bieżącym katalogu i jego podkatalogach

gunzip *.gz

Użyj poniższej komendy do wyodrębnienia dowolnej liczby plików .gz w bieżącym katalogu i jego podkatalogach

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