Извлеките файлы, содержащиеся в файле archive.tar.gz, в новый каталог с именем archive
У меня есть каталог, содержащий около 800.tgz-архивов, каждый из которых содержит около 10 файлов. Фактически, я хочу конвертировать каждый архив в каталог с тем же именем. Есть ли простая одна строка для этого, или я должен написать script?
Ответы
Ответ 1
Думаю, вам понадобится script. Вы можете указать каталог, в который находится выдержка, используя параметр tar -C.
В приведенном ниже script предполагается, что каталоги не существуют и должны быть созданы. Если каталоги действительно существуют, script все равно будет работать - mkdir просто провалится.
tar -xvzf archive.tar.gx -C archive_dir
например.
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
Ответ 2
Хорошо, если вы запустите $ tar -zxf some-archive.tar.gz -C .
(обратите внимание на точку в конце), новый каталог с именем some-archive/
будет создан в каталоге, в котором вы сейчас находитесь.
Возможно, это то, что вы имели в виду по вашему вопросу? Это то, что я обычно хочу, чтобы он мог работать и для вас.