Почему все отрицательные? Вариантов больше, чем просто -C (и, возможно, его версия этого не обеспечивает).
Alfe
2
Stack Overflow - сайт для вопросов программирования и разработки. Этот вопрос кажется не по теме, потому что он не касается программирования или разработки. Смотрите, какие темы я могу задать здесь, в Справочном центре. Возможно, лучше спросить Super User или Unix & Linux Stack Exchange .
jww
@jww Хотя я понимаю вашу точку зрения, у нас также есть теги с именами tarи gzна этом форуме. Извлечение архива в конкретный каталог вполне может быть частью сценария оболочки и, следовательно, частью программирования. Я думаю, что такой вопрос можно задать на любом из форумов.
Альфе
Ответы:
319
Вы можете использовать опцию -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
Или, если не подходит ни абсолютный путь, ни относительный путь к архивному файлу, вы также можете использовать его для присвоения имени архиву за пределами подобласти оболочки:
Вы можете использовать для цикла, чтобы распаковать несколько файлов .tar.gz в другую папку. Следующий код будет принимать / destination / folder / path в качестве аргумента сценария и распаковывать все файлы .tar.gz, имеющиеся в текущем местоположении в / destination / folder / path.
if [ $# -ne 1 ];
then
echo "invalid argument/s"
echo "Usage: ./script-file-name.sh /target/directory"
exit 0
fi
for file in *.tar.gz
do
tar -zxvf "$file" --directory $1
done
tar
иgz
на этом форуме. Извлечение архива в конкретный каталог вполне может быть частью сценария оболочки и, следовательно, частью программирования. Я думаю, что такой вопрос можно задать на любом из форумов.Ответы:
Вы можете использовать опцию
-C
(или,--directory
если вы предпочитаете длинные опции), чтобы указать целевой каталог по вашему выбору, если вы используете версию Gnutar
. Каталог должен существовать:Если вы не используете
tar
возможность извлечения в определенный каталог, вы можете простоcd
в целевой каталог перед вызовомtar
; тогда вам, конечно, придется указать полный путь к вашему архиву. Вы можете сделать это в подоболочке, чтобы не влиять на окружающий скрипт:Или, если не подходит ни абсолютный путь, ни относительный путь к архивному файлу, вы также можете использовать его для присвоения имени архиву за пределами подобласти оболочки:
источник
или с помощью GNU tar
источник
gzip
в случае, если tar не понимает архивные архивы.Экстракты myArchive.tar к / destinationDirectory
Команды:
источник
Вы можете использовать для цикла, чтобы распаковать несколько файлов .tar.gz в другую папку. Следующий код будет принимать / destination / folder / path в качестве аргумента сценария и распаковывать все файлы .tar.gz, имеющиеся в текущем местоположении в / destination / folder / path.
источник