LINUX.ORG.RU

массовая распаковка zip .нужна помощь.

 ,


0

1

вообщем задача такая.

нужно массово распаковать zip архивы,но сложность состоит в том что они находятся в разных директориях.
то есть корень выглядит из папок по алфавиту (a-b-c...)
в каждой папке имеются еще несколько папок (abc - afc - ...)
а вот уже собственно в них по одному .zip архиву

задача нужно массово распаковать эти архивы.

возможно ли это сделать без геморроя в виде распаковки каждого отдельно?

возможно ли это сделать без геморроя в виде распаковки каждого отдельно?

Нет, zip не умеет распаковывать более одного архива за раз.

ABS тебе в руки

sdio ★★★★★
()
Ответ на: комментарий от sdio

Нет, zip не умеет распаковывать более одного архива за раз.

Умеет, но нужно экранировать *, т.е. unzip \*.zip

GotF ★★★★★
()
$ for ZIP in `find $DIR -name '*.zip'`; do unzip -d `dirname $ZIP` $ZIP; done

не?

anonymous
()
Ответ на: комментарий от GotF

find /path/to/ -type f -name '*.zip' -execdir unzip {} +

спасибо) все отлично но в архивах находятся файлы с русскими именами .после распаковки имена превращаются в каркозяблы.

zloypingvin
() автор топика
Ответ на: комментарий от zloypingvin

Патчить unzip не обязательно, есть convmv.
Который, ИМХО, куда более правильное решение, хотя и создаёт дополнительный проход скриптом по файлам.

takino ★★★★★
()
Ответ на: комментарий от aol

молчал бы уж - за умного сошёл...

Ну давай, блесни своим.

anonymous
()
Ответ на: комментарий от takino

куда более правильное решение

лишнее файловые операции более правильны, вместо создания файлов сразу в правильной кодировке? да месье норкоман
тем более, что unzip-то скомпилять и прописать в path несложно

anonymous
()
Ответ на: комментарий от anonymous

Мы может быть про разные патчи говорим?
Я о добавлении ещё одной переменной окружения UNZIP_LOCALE или что-то ещё с кодировкой в которой должны быть имена файлов в архиве.
В этом случае, возникает новая проблема: архив, положим, в EUC-JP или даже koi8r, а переменная в значении 'cp1251': нужен ещё один этап преобразования имени файла, с возможными потерями части собственно имени. А у convmv прогон один и универсален: из заданной кодировки в utf-8.

takino ★★★★★
()
Ответ на: комментарий от takino

архив, положим, в EUC-JP или даже koi8r

ни разу не встречал. ок, для таких редких случаев можно запасным вариантом convmv

anonymous
()

unzip */*.zip не работает?

ymuv ★★★★
()
Ответ на: комментарий от aol

Что же так? Жаль, конечно, что без шлакоблоков. В следующий раз маны внимательнее читай.

anonymous
()
Ответ на: комментарий от takino

Патчить unzip не обязательно, есть convmv.

вот тут то и проблема (

не могу определить в какой кодировке распакованные файлы

cp866 и CP1251 в utf-8 выдают такие же карказяблы(

zloypingvin
() автор топика
Ответ на: комментарий от zloypingvin

ну ты сначала определись ужо в какой они кодировки на примере 1 zip -потом двигай дальше. По теме - если распаковывать всё равно куда - и всё именно так как ты описал - проще всего и быстрее сделать так:

for i in */*;do unzip $i;done

и не надо никаких find :-)

mumpster ★★★★★
()

всем спасибо. не завелся convmv. пропатчил unzip .все работает

zloypingvin
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.