LINUX.ORG.RU

как распаковать zip явно созданый под вендой?

 ,


2

1

Нужны поддиректории, однако вместо них получается просто фаил с именем типа блаблабла\блаблабла\тратата если просто unzip. unzip -j мне не подойдет ибо нужно знать что в какой папке, руками не вариант - много. Есть ли какой нибудь способ распаковать нормально?

ЗЫ И что характерно, скопировал фаил на флешку, и на ноуте со старой вендой ХП все распаковалось свинраром как надо. НО это же гемор все время так таскать если попадётся.

Ответ на: комментарий от Zhbert

Такое в кеды не ставил, мне удобней из консоли. Ну если это единственный выход, то что в кеды поставить чтобы они умели?

justin_case ()

Распаковывал неоднократно зипы от вендузятников, такое не встречал. Попадались только проблемы с кодировками когда-то давно.

Как вариант после распаковки скриптом всё исправлять.

Deleted ()

jar из open-jdk тоже может распаковывать/запаковывать zip файлы: jar -xvf file.zip

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

У меня Ark прекрасно со всем справляется, и понятно, что этот формат поступает только от виндузятников.
Уверен, что и консольный unzip справится, т.к. он работает в Krusader, и проблем тоже нет.

athost ★★★★★ ()

А в чём проблема, я так и не понял? Единственная проблема, которая была при распаковке zip-архивов — это с кодировками (привет Сахариту или как там он пишется).

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

Проблема в том как отображаются директории. В линуксе как известно они / А в винде - наоборот \. Соответственно вместо того чтоб распаковать «директория/фаил.ченибудь», распаковывается «вот\такой\вот\фаил.ченибудь» в одно слово, а папок нет вовсе.

justin_case ()

Тоже встречал такую подставу, хз отчего это

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

Вот ни разу такое не встречал. Архив, как я понимаю, не можешь выложить?

te111011010 ()

Никогда такого не видел и слышу впервые. Выложить можешь куда-нибудь архив сформированный таким образом?

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

А имя на ".zip" заканчивается? Или в названии, может, какие-то подозрительные символы есть?

post-factum ★★★★★ ()
Последнее исправление: post-factum (всего исправлений: 1)

justin_case (09.02.2019 20:14:04)

Есть ли какой нибудь способ распаковать нормально?

Не стоит подходить к этой проблеме топорно, потому что в общем смысле она не решаема: zip нормально распаковывающийся в offtop, распаковывается с крякозябами в лине и наоборот. Это ущербность конкретно данного формата сжатия.

Гораздо логичнее производить приведение содержимого zip к необходимой кодировке непосредственно перед распаковкой в конкретно взятой системе, а именно:

zip-fix-filename-encoding

И уже после перекодировки содержимого использовать стандартный unzip.

PS: Есть также вариант с перекодировкой после распаковки:

convmv -f cp1252 -t cp850 * --notest  && convmv -f cp866 -t utf-8 * --notest
Deleted ()
Последнее исправление: Deleted (всего исправлений: 4)

просто фаил с именем типа блаблабла\блаблабла\тратата

На любом доступном тебе языке набросай скрипт, который переименовывает блаблабла\блаблабла\тратата в блаблабла/блаблабла/тратата. При минимальном владении башем, перлом или ____ (вписать название твоего любимого языка) такое пишется за считанные минуты. Можно даже однострочник забахать.

debugger ★★★ ()

У меня недавно были проблемы с распаковкой на убунте большого зипа сделанного виндой. Оказалось, что в убунте UnZip 6.00 of 20 April 2009 и в современный зип оно не может. Решил запуском зипа из последней опенсусе в докере - там версия свежая.

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

Дело в том что там ни единой русской буквы в названии файлов. Вся проблема именно с обозначением что вот это - фаил а не папка.

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

Понятно. У меня тоже самое

unzip -v
UnZip 6.00 of 20 April 2009, by Info-ZIP.  Maintained by C. Spieler.

Значит в этом собака и порылась, хотя гента, а не убунту. Вообще позор конечно держать в стабильных версию 10 летней давности Может имеет смысол включить для анзипа нестабильную ветку? Какая версия уже распаковала нормально?

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

Я на самом деле немного напутал - у меня в убунте 16.04 была версия ещё древнее и у нее были проблемы. А вот этой от 2009 как раз распаковал нормально, сорри за дезу.

Когда-то, еще на солярке я изворачивался раззипуя архивы с помощью jar из джавы. Попробуй, вдруг поможет.

Deleted ()
Последнее исправление: Deleted (всего исправлений: 1)

вот тут поясняется почему так происходит.

Даже странно, что таких архивов немного, учитывая что косяк в т.ч. в .net до 4.6

Попробуй vidir

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

Все именно так, как он пишет и случилось, правда я не знаю какой там net стоял.

Попробуй vidir

[ Results for search key : vidir ]
Searching...

[ Applications found : 0 ]

а в гугле выдает тысячи тонн херни, никак не связаной с компами. Что это?

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

НЕ буду выкладывать дохрена но вот к примеру.


test $ unzip emma-the-story_win.zip 
Archive:  emma-the-story_win.zip
  inflating: build_out/Default Windows desktop 32-bit_Data\sharedassets6.assets.resS  
  inflating: build_out/Default Windows desktop 32-bit_Data\Managed\UnityEngine.SpriteMaskModule.dll  
  inflating: build_out/Default Windows desktop 32-bit_Data\Managed\UnityEngine.UIModule.dll  
  inflating: build_out/Default Windows desktop 32-bit_Data\Managed\UnityEngine.Analytics.dll  
  inflating: build_out/Default Windows desktop 32-bit_Data\level1  
  inflating: build_out/Default Windows desktop 32-bit_Data\Managed\UnityEngine.ParticlesLegacyModule.dll  
  inflating: build_out/Default Windows desktop 32-bit_Data\Managed\mscorlib.dll  
  inflating: build_out/Default Windows desktop 32-bit_Data\Managed\UnityEngine.Physics2DModule.dll  
  inflating: build_out/Default Windows desktop 32-bit_Data\sharedassets4.assets.resS  
  inflating: build_out/Default Windows desktop 32-bit_Data\Mono\etc\mono\2.0\web.config  
  inflating: build_out/Default Windows desktop 32-bit_Data\resources.assets  
  inflating: build_out/Default Windows desktop 32-bit_Data\globalgamemanagers  
  inflating: build_out/Default Windows desktop 32-bit_Data\Managed\UnityEngine.UnityWebRequestWWWModule.dll  
  inflating: build_out/Default Windows desktop 32-bit_Data\Managed\UnityEngine.AudioModule.dll  
  inflating: build_out/Default Windows desktop 32-bit_Data\Managed\UnityEngine.UNETModule.dll  
  inflating: build_out/Default Windows desktop 32-bit_Data\sharedassets1.assets  
  inflating: build_out/Default Windows desktop 32-bit_Data\sharedassets0.assets  
  inflating: build_out/Default Windows desktop 32-bit_Data\sharedassets3.assets  
  inflating: build_out/Default Windows desktop 32-bit_Data\Managed\DOTweenPro.dll  
  inflating: build_out/Default Windows desktop 32-bit_Data\Managed\UnityEngine.ClothModule.dll  
  inflating: build_out/Default Windows desktop 32-bit_Data\Managed\UnityEngine.Networking.dll  
  inflating: build_out/Default Windows desktop 32-bit_Data\sharedassets4.assets  
  inflating: build_out/Default Windows desktop 32-bit_Data\Mono\etc\mono\2.0\machine.config  
  inflating: build_out/Default Windows desktop 32-bit_Data\resources.resource  
  inflating: build_out/Default Windows desktop 32-bit_Data\Mono\etc\mono\config  
  inflating: build_out/Default Windows desktop 32-bit_Data\sharedassets1.assets.resS  
  inflating: build_out/Default Windows desktop 32-bit_Data\Managed\UnityEngine.VehiclesModule.dll  
  inflating: build_out/Default Windows desktop 32-bit_Data\Managed\UnityEngine.AccessibilityModule.dll  
  inflating: build_out/Default Windows desktop 32-bit_Data\Managed\UnityEngine.InputModule.dll  
  inflating: build_out/Default Windows desktop 32-bit_Data\ScreenSelector.bmp  
  inflating: build_out/Default Windows desktop 32-bit_Data\Managed\UnityEngine.AssetBundleModule.dll  
  inflating: build_out/Default Windows desktop 32-bit_Data\Managed\UnityEngine.Timeline.dll  
  inflating: build_out/Default Windows desktop 32-bit_Data\Managed\I18N.dll  
  inflating: build_out/Default Windows desktop 32-bit_Data\boot.config

ИТДИТП

build_out $ ls
'Default Windows desktop 32-bit_Data\app.info'                                            'Default Windows desktop 32-bit_Data\Managed\UnityEngine.SpriteMaskModule.dll'
'Default Windows desktop 32-bit_Data\boot.config'                                         'Default Windows desktop 32-bit_Data\Managed\UnityEngine.SpriteShapeModule.dll'
'Default Windows desktop 32-bit_Data\globalgamemanagers'                                  'Default Windows desktop 32-bit_Data\Managed\UnityEngine.StandardEvents.dll'
'Default Windows desktop 32-bit_Data\globalgamemanagers.assets'                           'Default Windows desktop 32-bit_Data\Managed\UnityEngine.StyleSheetsModule.dll'
'Default Windows desktop 32-bit_Data\level0'                                              'Default Windows desktop 32-bit_Data\Managed\UnityEngine.TerrainModule.dll'
'Default Windows desktop 32-bit_Data\level1'                                              'Default Windows desktop 32-bit_Data\Managed\UnityEngine.TerrainPhysicsModule.dll'
'Default Windows desktop 32-bit_Data\level2'                                              'Default Windows desktop 32-bit_Data\Managed\UnityEngine.TextRenderingModule.dll'
'Default Windows desktop 32-bit_Data\level3'                                              'Default Windows desktop 32-bit_Data\Managed\UnityEngine.TilemapModule.dll'
'Default Windows desktop 32-bit_Data\level4'                                              'Default Windows desktop 32-bit_Data\Managed\UnityEngine.Timeline.dll'
'Default Windows desktop 32-bit_Data\level5'                                              'Default Windows desktop 32-bit_Data\Managed\UnityEngine.UI.dll'
'Default Windows desktop 32-bit_Data\level6'                                              'Default Windows desktop 32-bit_Data\Managed\UnityEngine.UIElementsModule.dll'
'Default Windows desktop 32-bit_Data\Managed\Assembly-CSharp.dll'

Я даже напишу где этот фаил взять (у них там все такие втч и игоры под линух - сперва распакуй под вендой потом запускай).

https://freebies.indiegala.com/emma-the-story/

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

Пилять я не то написал, но тоже пригодится, вот file

$ file emma-the-story_win.zip 
emma-the-story_win.zip: Zip archive data, at least v2.0 to extract
justin_case ()
Ответ на: комментарий от justin_case

Что это?

1. Поставь command-not-found и он тебе будет говорить в каком пакете неустановленная тулза

2. vidir, у меня в дебиане, в пакете moreutils

В целом эта штука открывает список файлов в твоём редакторе. Ты правишь (в данном случае заменяешь слеши, но можно переименовывать, удалять и т.д.) и он приводит файловую систему в соответствие с твоими изменениями.

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

вот теперь понятней про море утилс. Что делает уже представляю, ман нагуглился.

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

Не стоит подходить к этой проблеме топорно, потому что в общем смысле она не решаема: zip нормально распаковывающийся в offtop, распаковывается с крякозябами в лине и наоборот. Это ущербность конкретно данного формата сжатия.

Не формата, а винды. По стандарту кодировка имён файлов или cp437, или UTF-8 и есть однобитный флаг который это определяет. Архивов с именами файлов в кодировке CP866 по стандарту быть вообще не должно.

Xenius ★★★★★ ()
Последнее исправление: Xenius (всего исправлений: 1)
Ответ на: комментарий от Xenius

Не формата, а винды

Интересно, почему они так сделали, а не кодили в UTF-8? Совместимость с каким-то старым софтом, не умеющим в юникод?

Такие zip вообще получается непереносимы между разными языками. А у них, наверное, и WMP читал/сохранял MP3 в виндовой кодировке (CP1251) в тегах ID3v1. Впрочем, это и Foobar делает. Виндософт, что тут скажешь...

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

Интересно, почему они так сделали, а не кодили в UTF-8? Совместимость с каким-то старым софтом, не умеющим в юникод?

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

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

Потому что он врёт. UTF8 появился в спецификации в 2006, когда сам зип в 1989.

И где я вру? Винда отказывается зиповать директорию, где есть имена и с расширенной латиницей типа ö и с кириллицей. По-хорошему ей следовало точно так же себя вести и раньше: если есть где-то символы, которых нет в кодовой таблицей DOS 437, в частности хоть одна кириллическая буква — отказаться создавать архив.

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

отказаться создавать архив

Сразу видно, кому работу работать, а кому просто так погулять. По-хорошему, они в своё время должны были расширить стандарт сами, но тогда все начали бы ныть, что мс пропихивает говно.

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

дык гейтс себе до сих пор не изменяет и пропихивает говно (унитазы делает)

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

Анон дело говорит. Там по ссылке даже скрипт есть чтоб распакованное починить.

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

У unzip есть такой параметр в опциях

  -O CHARSET  specify a character encoding for DOS, Windows and OS/2 archives

Его можно использовать чтобы распаковывать нормально с нужной кодировкой (скажем, это вариант для стандартного shift_jis, но с китайскими вроде проблемы были). Я, наверное, не могу сказать сколь успешно он работает, всегда когда попадается zip архив использую LC_ALL с нужной кодировкой (или даже языком – utf-8 видимо тоже не универсально перекодирует и не может нормально сохранить).

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

По-хорошему, они в своё время должны были расширить стандарт сами, но тогда все начали бы ныть, что мс пропихивает говно.

Если бы микрософтовцы расшили его именно так как это сделано сейчас, я бы не говорил такого. Но как бы они его расширили? Добавили бы двухбайтное поле для кодовой страницы?

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