Сначала довольно легко помнить правильные символы:
czf
= создайте заархивированный файлxzf
= извлеките заархивированный файлЕсли Вы думаете этот путь, необходимо всегда разбираться в нем.
Другая вещь с важными данными, имея его в некотором управлении версиями. Я рекомендую git
для этого. Это сохранит Вас вся Ваша история локально и позволяет Вам продвигать все это к любому другому носителю. - Очень удобный и больше никаких резервных копий с помощью tar.
Вы можете выполнить одну команду 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
] Делает ли это то, что ты хочешь? [
] [tar xzvf file.tar.gz -C /target/directory
] На современной 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-страницы на наличие поддерживаемых опций ваших инструментов.
Я наконец понял это ...
Команда 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
).