як я можу витягти кілька файлів gzip у каталозі та підкаталогах?


11

Я спробував і те, gzipі gunzipкоманду, але я отримую будь-яку

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

Якщо я спробую цю -fопцію, працювати над одним файлом потрібно дуже багато часу, і команда не виконується успішно. Я щось пропускаю?


2
Чи містить каталог .gz файли, імена яких починаються з дефісів, наприклад -Y.something.gz? Якщо це так, вам може знадобитися використовувати --прапор Gnu, щоб переконатися, що вони розглядаються як назви файлів, а не як варіанти, тобтоgunzip -- *.gz
steeldriver

@steeldriver Так, у мене є декілька файлів, починаючи з -
Герман Зуброт

що спричинило хоча б одну з двох проблем.
Герман Зубник

Відповіді:


16

Ви можете використовувати команду нижче.

Перейдіть до каталогу, де знаходиться ваш .gzфайл, і запустіть команду:

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

Він витягне весь файл з оригінальним іменем та збереже його в домашній каталог поточного користувача ( /home/username). Ви можете змінити його на інше місце.

Редагувати:

gunzip *.gz

Ця команда також буде працювати. Але за замовчуванням він замінює оригінальний файл.


Ви читали те, що я написав у своєму питанні? gunzip * .gz не працює для мене. Але цикл for працює, я спантеличений.
Герман Зубник

але це працює для мене та інших, чому він показує "недійсний варіант -" Y ". я думаю, що або ваш формат файлу не в порядку, або ви пропустили якусь річ у команді.
pl_rock


4

Варіант №1 : розпакуйте кілька файлів за допомогою однієї цитати (коротка версія)

gunzip '*.gz'

Зауважте, що *.gzслово розміщено між двома цитатами, щоб оболонка не розпізнала його як символ підказки.

Варіант №2 : розпакуйте кілька файлів, використовуючи оболонку для циклу (довга версія)

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

Джерело

Редагувати:

Я щойно спробував:

gunzip -dk *.gz

і це спрацювало.

-dдля розпакування та kзбереження оригінальних файлів.


Ви перевірили gunzip ‘*.gz’ цю команду я не в змозі виконати цю команду. це дає помилку.
pl_rock

use gunzip '*.gz'not gunzip ‘*.gz’ ( ' 'not `` ``)
Bilal

Я просто копіюю вставлення вашої команди, і це дає gzip: *.gz: No such file or directoryнове також не працює. ти спробував?
pl_rock

Це не працює gunzip '* .gz' gzip: * .gz: Немає такого файлу чи каталогу
Herman Toothrot

Вибачте, я не спробував цього! Я зараз на WIndows :(
Білал

0

Користувачі Linux:

Використовуйте наступну команду для вилучення мінімальної кількості файлів .gz у поточному каталозі та його підкаталогах

gunzip *.gz

Використовуйте наступну команду для вилучення будь-якої кількості .gz файлів у поточному каталозі та його підкаталогах

sudo find . -name "*.gz" | xargs gunzip
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.