Форум русскоязычного сообщества Ubuntu


Считаете, что Ubuntu недостаточно дружелюбна к новичкам?
Помогите создать новое Руководство для новичков!

Автор Тема: Распаковка архивов с обходом вложенных папок  (Прочитано 5439 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн valrust

  • Активист
  • *
  • Сообщений: 372
    • Просмотр профиля
Если использовать aunpack, то команда не менее монструозная получилась, но работает как просил автор темы.
find -name "*.zip" -print0 | xargs -0 -I arh sh -c 'cd "$(dirname "arh")" && aunpack -D "$(basename "arh")" && rm "$(basename "arh")"' 2>errorl.log

Оффлайн ALiEN

  • Администратор
  • Старожил
  • *
  • Сообщений: 7810
  • We were here
    • Просмотр профиля
Код: (bash) [Выделить]
#!/bin/bash

while read F; do
  pushd "$(dirname "$F")" &&
  if aunpack -D "$(basename "$F")" &> /dev/null; then
    echo "GOOD: $F"
    rm -v "$F"
  else
    echo "FAIL: $F" 1>&2
  fi
  popd
done < <(find -name "*.zip") 2> >(tee -a error.log)

Пользователь добавил сообщение 05 Июля 2019, 23:33:40:
Не люблю длинные однострочники  :)
« Последнее редактирование: 05 Июля 2019, 23:48:25 от ALiEN175 »
🖥 AsRock B550M Pro4 :: AMD Ryzen 5 3600 :: 16 GB DDR4 :: AMD Radeon RX 6600 :: XFCE
💻 ACER 5750G :: Intel Core i5-2450M :: 6 GB DDR3 :: GeForce GT 630M :: XFCE

Оффлайн Nick222

  • Автор темы
  • Активист
  • *
  • Сообщений: 619
    • Просмотр профиля
После работы строки от valrust осталось 10 тыс ZIP и 600 RAR, на которые команда не реагирует почему-то.

Есть ошибки: "mismatching "local" filename"

Может, из-за ошибок команда останавливается?

И ещё обнаружились архивы HA - чем на Линукс их можно распаковать?
« Последнее редактирование: 06 Июля 2019, 04:51:30 от Nick222 »
Xubuntu 25.04

Оффлайн andytux

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 7967
    • Просмотр профиля
Цитировать
После работы строки от valrust осталось 10 тыс ZIP
Может быть потому, что "ZIP" и "zip" - не одно и тоже. А еще могут быть "Zip", "ziP" и т.д.

Оффлайн ALiEN

  • Администратор
  • Старожил
  • *
  • Сообщений: 7810
  • We were here
    • Просмотр профиля
Nick222, Постарайтесь вывод терминала не пересказывать своими словами. Копируйте как есть. И не весь вывод - только то, что у вас вызывает вопросы.
« Последнее редактирование: 06 Июля 2019, 05:05:37 от ALiEN175 »
🖥 AsRock B550M Pro4 :: AMD Ryzen 5 3600 :: 16 GB DDR4 :: AMD Radeon RX 6600 :: XFCE
💻 ACER 5750G :: Intel Core i5-2450M :: 6 GB DDR3 :: GeForce GT 630M :: XFCE

Оффлайн valrust

  • Активист
  • *
  • Сообщений: 372
    • Просмотр профиля
Цитировать
После работы строки от valrust осталось 10 тыс ZIP
Может быть потому, что "ZIP" и "zip" - не одно и тоже. А еще могут быть "Zip", "ziP" и т.д.
В файловых системах Linux имена archive.zip, archive.Zip, archive.ziP, archive.ZIP и т.д. это разные файлы. Т.е. есть зависимость от регистра.

Если в именах архивов разные регистры в суффиксе ".zip", то вместо find -name "*.zip" -print0 надо использовать find -iname "*.zip" -print0

Оффлайн Nick222

  • Автор темы
  • Активист
  • *
  • Сообщений: 619
    • Просмотр профиля
1) Если файл архива находится в папке, имя которой совпадает с именем архива, то распаковки не происходит.

Папка: Имя
Файл: Имя.zip

Применяю строку:

find -name "*.zip" -print0 | xargs -0 -I arh sh -c 'cd "$(dirname "arh")" && aunpack -D "$(basename "arh")" && rm "$(basename "arh")"' 2>error.log
2) Если архив битый или расширение не совпадает с реальным типом архива, то не распаковывается.

Хотелось бы битые архивы стирать, а у неправильных переименовывать расширение, если возможно...

3) Что-то не то с кодировкой имён файлов - при попытке распаковки архивов, созданных то ли под старой Виндой, то ли под ДОСом:

Цитировать
Wide character in setenv at /usr/bin/aunpack line 33.
Wide character in setenv at /usr/bin/aunpack line 33.
Сименон Р–. Мегрэ Рё человек РЅР° скамейке.TXT:  mismatching "local" filename (Сименон Ж. Мегрэ и человек на скамейке.TXT),
         continuing with "central" filename version
aunpack: unzip ...: non-zero return-code

4) И последнее - нельзя ли впихнуть в эту строку ДОСовский распаковщик, например, HA или LGHA и как ? Или его надо прописывать в настройках aunpack ? Или использовать DOSBOX или DOSEmu - но как загнать их в цикл?

Спасибо огромное! :)

Пользователь добавил сообщение 07 Июля 2019, 15:49:09:
Итак:

- проблемы кодировки имён файлов решил распаковкой руками в Double Commander - благо там было не более 100 директорий одного уровня, в каждой не больше 500 файлов (которые легко распаковались пакетом);
- проблемы совпадения имени файла и папки как-то сами рассосались :) ;
- проблему HA решил установкой через Wine Total Commander-а и к нему архиваторного плагина http://wincmd.ru/plugring/ha.html (пришлось все такие файлы перенести в одну папку и там они пакетом распаковались);

В целом - явно не хватает утилиты работы с файлами в сложной структуре папок - имена, тестирование, распаковка, и т.п.
« Последнее редактирование: 07 Июля 2019, 15:49:09 от Nick222 »
Xubuntu 25.04

 

Страница сгенерирована за 7.064 секунд. Запросов: 26.