У меня есть каталог, содержащий около 800.tgz-архивов, каждый из которых содержит около 10 файлов. Фактически, я хочу конвертировать каждый архив в каталог с тем же именем. Есть ли простая одна строка для этого, или я должен писать сценарий?Извлеките файлы, содержащиеся в файле archive.tar.gz, в новый каталог с именем archive
ответ
Я думаю, вам нужно будет это сценарий. Вы можете указать каталог, в который находится выдержка, используя параметр 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
Да, я думал, что мне, вероятно, понадобится сценарий - спасибо за подтверждение. –
Ваш скрипт работает хорошо - спасибо за это! –
Сценарий работал хорошо, но мне нужно было добавить «mkdir $ a_dir». – cerebrou
Ну, если вы запустите $ tar -zxf some-archive.tar.gz -C .
(обратите внимание на точку в конце) новый каталог под названием some-archive/
будет создан в директории, которую вы в настоящее время.
Может быть, это то, что вы имели в виду свой контекстуальный вопрос? Это то, что я обычно хочу, чтобы оно могло работать и на вас.
Вы можете указать это в самой команде 'tar -xvzf filename.tar.gz -C/wish/path' –