Как правильно распаковать ZIP-архив файлов с ивритскими именами?

Предполагая, что все несортированные файлы находятся в messy_dir , а ваши подкаталоги находятся в sorted_dir , вы можете сделать что-то вроде этого:

(cd sorted_dir; mkdir jpg gif)
find messy_dir -type f \( -iname '*.jpg' -exec mv {} ../sorted_dir/jpg/ \; -o \
                          -iname '*.gif' -exec mv {} ../sorted_dir/gif/ \; \)

Это можно улучшить, но это неплохая отправная точка. .


Если вместо этого вы хотите использовать сценарий, попробуйте следующее:

#!/bin/bash

# Check assumptions
[ "$#" -eq 2 ] || exit 1
[ -d "$1" ] || exit 1

find "$1" -type f -name '*?.?*' -exec sh -c '
    mkdir -p "$2/${1##*.}" && mv "$1" "$2/${1##*.}"
' find-sh {} "$2" \;
19
15.05.2018, 22:28
6 ответов

Acabo de tener el mismo problema, y ​​resulta que mi versión de unzipque está disponible en los repositorios de Ubuntu(UnZip 6.00 of 20 April 2009, by Debian. Original by Info-ZIP.)puede manejar la decodificación automática de nombres de archivo si especifica el interruptor -a.

unzip -a stupid.zip
5
27.01.2020, 19:45

У меня есть zip-архив, сжатый в Linux (из командной строки ), и имена файлов с диакритическими знаками неправильно распаковываются в Windows, но я успешно распаковал его с помощью программы Bandizip , которая может установить кодировку на панель инструментов.

0
27.01.2020, 19:45

Я успешно выполнил команду 7z x <source.zip>.

Версия:

p7zip Version 16.02 (locale=utf8,Utf16=on,HugeFiles=on,64 bits,[...])

Потенциально важная среда:

LANG=en_US.UTF-8
LC_ALL=en_US.UTF-8
LC_CTYPE=UTF-8

Он смог распаковать все файлы с 8 -битными символами в именах файлов, причем некоторые из этих символов были пропущены, а некоторые искажены.

15
27.01.2020, 19:45

У меня была аналогичная проблема с декодированием zip-архива с кириллическими символами. Однострочный скрипт на Python сделал свою работу правильно:

#!/usr/bin/python

import zipfile
import sys

zipfile.ZipFile(sys.argv[1], 'r').extractall(sys.argv[2] if len(sys.argv) > 2 else '.')

Тогда просто назовите его unzip_encи назовите егоunzip_enc ZIP_FILE [TARGET_DIR]

Для меня ни переменные среды unzip -UU, unzip -a, ни LANG*не помогли.

3
27.01.2020, 19:45

Мне повезло с этой комбинацией:

export LANG=es_MX 
7z x file.zip
convmv -f cp437 -t utf8 -r.

добавить примечание --к convmv для фактического переименования. Позже я нашел еще лучшую версию:

LANG=es_MX.cp437 unzip -UU file.zip
convmv -f cp437 -t utf8 -r. --notest
2
27.01.2020, 19:45

Эта проблема с zip-файлами была исправлена ​​в самой последней диспетчере файлов и архивов far2l . Чтобы определение устаревшей кодировки zip с помощью far2l работало правильно, языковые настройки вашей системы должны совпадать с теми, которые установлены в системе, в которой был создан архив (. Внутренний инструмент Windows для работы с папками zip использует точно такую ​​же логику ). Также вы можете сделать

LANG=he_IL.UTF-8 far2l
1
11.10.2020, 15:15

Теги

Похожие вопросы