Encontrei uma solução no fórum OpenNET.ru, um popular recurso em idioma russo que é dedicado a software e tecnologias de código aberto desde 1996. A post no OpenNET sugere que o Info-ZIP, uma vez que um conjunto popular de ferramentas para manipular arquivos ZIP em computadores que executam o MS-DOS, presume que no MS-DOS existe apenas um 8- codificação de bits, ou seja, CP850, portanto, todos os nomes de arquivos são executados automaticamente através de CP850->CP1252
conversion. O CP1252 foi provavelmente escolhido como a aproximação mais popular da codificação do conjunto de caracteres ISO-8859-1.
Portanto, o comando find correto para executar depois de extrair um arquivo contendo nomes de arquivos cirílicos seria
find -mindepth 1 -exec sh -c \
'mv "$1" "$(echo "$1" | iconv -f cp1252 -t cp850 | iconv -f cp866 )"' sh {} \;
Curiosamente, é possível encontrar sugestões para usar não o CP1252, mas o ISO-8859-1. Esse não parece ser o caso, pois um dos arquivos que encontrei a transformação iconv -f iso8859-1 -t cp850
falhou, enquanto iconv -f cp1252 -t cp850
foi convertido com êxito.
Voltando a personagens individuais
Р о с К о с м о с
CP866: 90 AE E1 8A AE E1 AC AE E1
Agora aplicando o CP850 - > CP1252 resulta em C9 AB DF E8 AB DF BC AB DF
. Exatamente a sequência que observamos.
Outro comando útil seria
unzip -l РосКосмос.zip | grep -Ev '^Archive:' |\
iconv -f iso8859-1 -t cp850 | iconv -f cp866
Para obter uma lista de arquivos do arquivo
Length Date Time Name
--------- ---------- ----- ----
0 2017-05-03 18:19 РосКосмос/ict_inf.pdf
--------- -------
0 1 file
Filtrar a linha que começa com Archive:
é uma proteção para ocultar o nome do arquivo morto da conversão.