2015-05-11 2 views
0

я мог бы сделать это для .zip файлов в папке, используя команду ниже:Как я могу распаковать все .tar файлы в каталоге в папки на основе имени файла для каждого .tar?

for f in "!"; do unzip -d "${f%*.zip}" "$f"; done 

вышеприведенной команда извлекает все .zip файлов в данной папке вложенных папок, имеющее содержание и название соответствующих .zip файлов.

Но я не смог найти команду, которая будет делать то же самое для файлов .tar. Пожалуйста помоги.

Btw, я пытаюсь сделать это на удаленном сервере с использованием WinSCP/putty. Таким образом, я не могу использовать программное обеспечение GUI. Мне нужна команда, таким образом, вопрос.

+0

Что мешает вам делать то же самое для смол? – lxe

+0

это первое, что я пробовал, не получил его для работы. Вот команда, которую я использовал, которая не сработала: для f в "!"; do tar xvf -d "$ {f% *. tar}" "$ f"; сделано для f в "!"; do tar xvf -C "$ {f% *. tar}" "$ f"; сделанный – Krishna

ответ

0

После небольшого ворча я придумал for f in $(find -maxdepth 1 | grep .tar); do mkdir ${f%.tar}; tar -xaf $f -C ${f%.tar} ; done, похоже, работает, если имя файла не содержит пробелов. Предполагаю, что вам нужен каталог от foo.tar до имени foo (без расширения файла). Если вы хотите, чтобы каталог был назван foo.tar (с расширением файла), попробуйте использовать for f in $(find -maxdepth 1 | grep .tar); do mkdir $f ; tar -xaf $f -C $f ; done. IIRC, клиент удаленного доступа Cyberduck может обрабатывать сжатые файлы в графическом интерфейсе - так что вы можете попробовать это, если вы в порядке с GUI-решением.

Смежные вопросы