По ссылке - описание действия для локализации консоли. У вас же - имена файлов в архивах изначально записаны в cp1251 (предположительно). для решения траблы можно использовать что-то вроде этого:
#!/bin/bash
# распаковывает zip-архив, изменяет кодировку имен файлов с cp1251 на utf8
# @required unzip
# @required iconv
# @param string путь к zip-файлу
# @param string путь к директории, в которую zip-файл будет распакован
# * если указана несуществующая директория - она будет создана
# * если директория не указана, то zip-файл будет распакован в текущую директорию
IFS_=${IFS}
IFS=$'\n'
CP_FROM=cp1251
CP_TO=utf8
[ $# -ne 1 ] && [ $# -ne 2 ] && echo "Use $(basename $0) <zip file name> [<destination directory>]" && exit 1
fileName=${1}
destDir=${2:-./}
[ ! -f "$fileName" ] && echo "File '${fileName}' not exists. Exit" && exit 2
mkdir -p "${destDir}" 2>/dev/null
[ ! -d "${destDir}" ] && echo "Directory '${destDir}' not exists. Exit" && exit 2
unzip ${fileName} -d ${destDir} 2>&1 1>/dev/null
[ $? -ne 0 ] && echo "Error when trying to decompress file: '${fileName}'. Exit" && exit 2
pushd $(pwd) 2>&1 1>/dev/null
cd ${destDir}
for oldDirName in $(find ./ -type d); do
newDirName="$(echo $oldDirName | iconv -f ${CP_FROM} -t ${CP_TO} 2>/dev/null)"
[ -z ${newDirName} ] && echo "Directory skipped: ${oldDirName}" >&2 && continue
mkdir -p "${newDirName}"
done
for oldFileName in $(find ./ -type f); do
newFileName="$(echo ${oldFileName} | iconv -f ${CP_FROM} -t ${CP_TO} 2>/dev/null)"
[ -z ${newFileName} ] && echo "File skipped: ${oldFileName}" >&2 && continue
cp "${oldFileName}" "${newFileName}" 2>/dev/null
done
popd 2>&1 1>/dev/null
exit 0
Попробуйте, мб поможет. Возможно стоит сначала подобрать исходную кодировку, в которой записаны имена файлов
И баба с воза, и волки сыты...