2013-02-21 1 views
11

У меня есть каталог, содержащий около 800.tgz-архивов, каждый из которых содержит около 10 файлов. Фактически, я хочу конвертировать каждый архив в каталог с тем же именем. Есть ли простая одна строка для этого, или я должен писать сценарий?Извлеките файлы, содержащиеся в файле archive.tar.gz, в новый каталог с именем archive

+0

Вы можете указать это в самой команде 'tar -xvzf filename.tar.gz -C/wish/path' –

ответ

11

Я думаю, вам нужно будет это сценарий. Вы можете указать каталог, в который находится выдержка, используя параметр tar -C.

В приведенном ниже сценарии предполагается, что каталоги не существуют и должны быть созданы. Если каталоги действительно существуют, скрипт все равно будет работать - mkdir просто потерпит неудачу.

tar -xvzf archive.tar.gx -C archive_dir 

e.g.

for a in *.tar.gz 
do 
    a_dir=`expr $a : '\(.*\).tar.gz'` 
    mkdir $a_dir 2>/dev/null 
    tar -xvzf $a -C $a_dir 
done 
+0

Да, я думал, что мне, вероятно, понадобится сценарий - спасибо за подтверждение. –

+0

Ваш скрипт работает хорошо - спасибо за это! –

+0

Сценарий работал хорошо, но мне нужно было добавить «mkdir $ a_dir». – cerebrou

-2

Ну, если вы запустите $ tar -zxf some-archive.tar.gz -C . (обратите внимание на точку в конце) новый каталог под названием some-archive/ будет создан в директории, которую вы в настоящее время.

Может быть, это то, что вы имели в виду свой контекстуальный вопрос? Это то, что я обычно хочу, чтобы оно могло работать и на вас.