У мене каталог з великою кількістю .txt.gz
файлів (імена яких не відповідають певній схемі.)
Який найпростіший спосіб до gunzip
них? Я хочу , щоб зберегти свої оригінальні імена, так що вони йдуть від whatevz.txt.gz
доwhatevz.txt
У мене каталог з великою кількістю .txt.gz
файлів (імена яких не відповідають певній схемі.)
Який найпростіший спосіб до gunzip
них? Я хочу , щоб зберегти свої оригінальні імена, так що вони йдуть від whatevz.txt.gz
доwhatevz.txt
Відповіді:
Як щодо цього лише?
$ gunzip *.txt.gz
gunzip
створить файл, згорнутий без .gz
суфікса, та видалить початковий файл за замовчуванням (детальніше див. нижче). *.txt.gz
буде розширено вашою оболонкою до всіх файлів, які відповідають.
Цей останній біт може зашкодити вам, якщо він розшириться до дуже довгого списку файлів. У такому випадку спробуйте використовувати find
та -exec
виконати роботу за вас.
На чоловіковій сторінці gzip(1)
:
gunzip takes a list of files on its command line and replaces each file whose name ends with .gz, -gz, .z, -z, or _z (ignoring case) and which begins with the correct magic number with an uncompressed file without the original extension.
gzip може зберігати та відновлювати ім'я файлу, що використовується під час стиснення. Навіть якщо ви перейменовуєте стислий файл, ви можете здивуватися, дізнавшись, що він знову відновиться до початкового імені.
З сторінки gzip:
За замовчуванням gzip зберігає оригінальне ім'я та часову позначку у стисненому файлі. Вони використовуються при розпакуванні файлу з
-N
опцією. Це корисно, коли стиснене ім’я файлу було усічене або коли часова марка не зберігалася після передачі файлу.
Ці імена файлів, що зберігаються у метаданих, також можна переглядати за допомогою file
:
$ echo "foo" > myfile_orig
$ gzip myfile_orig
$ mv myfile_orig.gz myfile_new.gz
$ file myfile_new.gz
myfile_new.gz: gzip compressed data, was "myfile_orig", last modified: Mon Aug 5 08:46:39 2019, from Unix
$ gunzip myfile_new.gz # gunzip without -N
$ ls myfile_*
myfile_new
$ rm myfile_*
$ echo "foo" > myfile_orig
$ gzip myfile_orig
$ mv myfile_orig.gz myfile_new.gz
# gunzip with -N
$ gunzip -N myfile_new.gz # gunzip with -N
$ ls myfile_*
myfile_orig