2013-08-23 5 views

ответ

79
gzip -dc archive.tar.gz | tar -xf - -C /destination 

или с GNU дегтя

tar xzf archive.tar.gz -C /destination 
+3

Мне нравится понятие использования 'gzip' в случае, если tar не понимает ZIP-архивы. – Alfe

211

Вы можете использовать опцию -C (или --directory, если вы предпочитаете длинные варианты), чтобы дать целевую директорию вашего выбора в случае, если вы используете версию Gnu от tar. Каталог должен существовать:

mkdir foo 
tar -xzf bar.tar.gz -C foo 

Если вы не используете tar способен извлекать в определенный каталог, вы можете просто cd в целевой каталог перед вызовом tar; конечно, вам, конечно, придется дать полный путь к вашему архиву. Вы можете сделать это в обзорном субоболочке, чтобы избежать влияния на окружающую сценарий:

mkdir foo 
(cd foo; tar -xzf ../bar.tar.gz) # instead of ../ you can use an absolute path as well 

Или, если ни абсолютный путь, ни относительный путь к файлу архива подходит, вы также можете использовать это, чтобы назвать архив за пределами обзорная субоболочка:

TARGET_PATH=a/very/complex/path/which/might/even/be/absolute 
mkdir -p "$TARGET_PATH" 
(cd "$TARGET_PATH"; tar -xzf -) < bar.tar.gz 
2

Экстракты myArchive.tar в /destinationDirectory

Команды:

cd /destinationDirectory 
pax -rv -f myArchive.tar -s ',^/,,'