Как я использую gunzip и tar для извлечения моего tar.gz файла к определенному каталогу, который я хочу?

Сначала довольно легко помнить правильные символы:

  • czf = создайте заархивированный файл
  • xzf = извлеките заархивированный файл

Если Вы думаете этот путь, необходимо всегда разбираться в нем.

Другая вещь с важными данными, имея его в некотором управлении версиями. Я рекомендую git для этого. Это сохранит Вас вся Ваша история локально и позволяет Вам продвигать все это к любому другому носителю. - Очень удобный и больше никаких резервных копий с помощью tar.

4
19.07.2014, 01:50
4 ответа

Вы можете выполнить одну команду tar для извлечения содержимого, где хотите:

tar -zxvf path_to_file -C output_directory

Как объяснено в tar manpages:

-C directory, --cd directory, --directory directory

В режиме c и r это изменяет директорию перед добавлением команды следующие файлы. В режиме x измените каталоги после открытия но до извлечения записей из архива.


Поскольку вы добавили, что используете Solaris, я думаю, что вы можете попробовать:

gunzip -dc path_to_file | tar xf - -C path_to_extract
8
27.01.2020, 20:46
[

] Делает ли это то, что ты хочешь? [

] [
tar xzvf file.tar.gz -C /target/directory
]
2
27.01.2020, 20:46

На современной Linux вы можете использовать:

tar xzf /path/to/file.tar.gz -C /target/directory/

Это практически эквивалентно:

(cd /target/directory/; gzip -cd /path/to/file.tar.gz|tar xf - )

Если вы не работаете в Linux, проверьте свои man-страницы на наличие поддерживаемых опций ваших инструментов.

1
27.01.2020, 20:46

Я наконец понял это ...

Команда find может использоваться для выполнения любой команды для каждого найденного файла.

find . -name "*.tar" -execdir tar -vxf '{}' \; -delete

Рекурсивно сопоставлять имена файлов ( find ) в текущем каталоге (. ), имя которых соответствует регулярному выражению ( -name ) любому, что заканчивается точкой tar ( *. Tar ") (двойные кавычки не позволяют bash расширять глобальный объект * .tar - в моем буквальном тесте из-за окружающих обстоятельств мне приходилось перед каждой цитатой ставить обратную косую черту).Затем для каждого совпадающего файла выполните tar в каталоге найденного файла ( -execdir tar ) с подробным описанием ( -v ) и извлеките собранные файлы ( -x ) из архива ( -f ), расположенного find ( '{}' ) (одинарные кавычки предотвращают интерпретацию оболочки локального имени файла), указывающего конец списка параметров, который должен быть передан в tar для каждого совпадающего файла ( \; ) (обратная косая черта предотвращает понимание точки с запятой оболочкой), а затем сообщает find для удаления каждого совпадающего файла, как указано параметром, переданным в find ( -delete ).

1
27.01.2020, 20:46

Теги

Похожие вопросы