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?


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.


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.


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
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.