Как извлечь файлы в другой каталог с помощью команды 'tar'?

Я думал, что tar archive.tar /users/mylocation будет работать, но это не так. Как я могу это сделать?

Комментарии к вопросу (3)
Решение

Чтобы извлечь архив в каталог, отличный от текущего, используйте опцию -C, или --каталог, tar, как показано в примере

tar -xf archive.tar -C /target/directory

Обратите внимание, что целевой каталог должен существовать до выполнения этой команды (он может быть создан командой mkdir /target/directory).

О других опциях читайте в manual page (команда: man tar).

Комментарии (8)

Обратите внимание, что если ваш tarball уже содержит имя каталога, которое вы хотите изменить, добавьте опцию --strip-components=1:

tar xf archive.tar -C /target/directory --strip-components=1
Комментарии (3)

Объединение предыдущих ответов и комментариев:

Просто извлечь содержимое и создать целевой каталог, если он отсутствует:

mkdir -p /target/directory && tar xf archive.tar -C /target/directory

Чтобы извлечь, а также удалить корневой (первого уровня) каталог в zip-архиве

mkdir -p /target/directory && tar xf archive.tar -C /target/directory --strip-components=1
Комментарии (0)

Другой вариант заключается в использовании ... один-на высшем уровне. Это автоматически создаст каталог с именем оригинала.

tar zxvf filename.tgz --one-top-level

Кроме того, если вы хотите, вы можете задать свой собственный и смолы создаст его автоматически.

tar zxvf filename.tgz --one-top-level=new_directory
Комментарии (2)

Что я нашла интересным в связи с добычей, это зависит от того, как вы создали архив, см. В этом примере

cd /tmp
mkdir folder
touch folder/file.txt

когда вы делаете тар-zcvf папку folder.tar.gz все как положено = когда вы распакуйте его теперь будут заасфальтированы (папка будет создать, если вы удалили его) какпапки/tmp//`.

Но, когда вы будете создавать смол как тар-zcvf tmp-folder.tar.gz папки /tmp/и распакуйте его в папку /tmp, результат будет каталог в/tmp папки/tmp/! В таком случае вам придется распаковать его в / - тар-XF tmp-folder.tar.gz -с /

Комментарии (0)

С дегтем 1.29, мы можем просто добавить имя каталога после дегтя именем. Например,

tar zxvf tar-file directory-name/
Комментарии (0)