Декомпрессировать файл gzip в определенный каталог
Что такое gzip-эквивалент следующей команды:
tar xvzf /usr/local/file/file/file.tar.gz -C /usr/local/extract_here
Я пытаюсь
gzip -d /usr/local/file/file/file.tar.gz -C /usr/local/extract_here
но это не сработает, как мне это сделать с помощью gzip?
Ответы
Ответ 1
Учитывая тот факт, что у вас есть файл .tar.gz, первый способ, который вы пробовали, с опцией -C, будет работать нормально:
tar xvzf /dir/to/file.tar.gz -C /dir/to/output/
tar
вызывает gzip для распаковки, а затем извлекает файлы из потока tar. gzip
может только распаковываться, поэтому gunzip file.tar.gz
просто уйдет с распакованным file.tar
, после чего вам понадобится tar xvf file.tar
. Опция z
tar
- это просто ярлык для выполнения декомпрессии с помощью gzip вместе с извлечением файлов.
Если вы хотите просто распаковать файл .gz(в отличие от извлечения файла .tar.gz) в другой каталог, просто проведите туда. Например. gzip -dc < file.gz > /somewhere/file
.
Ответ 2
Чтобы сохранить файл .tar без сжатия GZIP, я использую такую строку с хорошими результатами:
cat file_to_uncompress.tar.gz | gzip -d > /destination_directory/packet_uncompressed.tar
Это полезная и интуитивная форма управления пакетами в некоторых ситуациях.
Ответ 3
cd /mydir_with_gz_files
for i in *gz
do
gzip -dkc < $i > /my_destination_dir/${i%%.gz}
done
Этот синтаксис предназначен для извлечения нескольких файлов *.gz
, содержащихся в /mydir_with_gz_files
, в другой каталог.
1) Здесь используется опция -k
, потому что иначе gzip НЕ сохранит сам архив. Хорошо помнить!
2) Я также хочу подчеркнуть то, что кажется очевидным для тех, кто дает правильный ответ, но не был так для меня и автора вопроса: gzip НЕ будет извлекать файлы в другую директорию, но будет ожидать, что полученный несжатый файл NAME также указывается.
Это достигается здесь с помощью $i > ${i%%.gz}
bash замены параметров, которая выдает имя типа "file.gz
" своего ".gz
". С другими оболочками синтаксис будет отличаться (если вообще возможно).