Я думал, что tar archive.tar /users/mylocation
будет работать, но это не так. Как я могу это сделать?
Чтобы извлечь архив в каталог, отличный от текущего, используйте опцию -C
, или --каталог
, tar, как показано в примере
tar -xf archive.tar -C /target/directory
Обратите внимание, что целевой каталог должен существовать до выполнения этой команды (он может быть создан командой mkdir /target/directory
).
О других опциях читайте в manual page (команда: man tar
).
Обратите внимание, что если ваш tarball уже содержит имя каталога, которое вы хотите изменить, добавьте опцию --strip-components=1
:
tar xf archive.tar -C /target/directory --strip-components=1
Объединение предыдущих ответов и комментариев:
Просто извлечь содержимое и создать целевой каталог, если он отсутствует:
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
Другой вариант заключается в использовании ... один-на высшем уровне. Это автоматически создаст каталог с именем оригинала.
tar zxvf filename.tgz --one-top-level
Кроме того, если вы хотите, вы можете задать свой собственный и смолы создаст его автоматически.
tar zxvf filename.tgz --one-top-level=new_directory
Что я нашла интересным в связи с добычей, это зависит от того, как вы создали архив, см. В этом примере
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 -с /
С дегтем 1.29, мы можем просто добавить имя каталога после дегтя именем. Например,
tar zxvf tar-file directory-name/