ЭТО НЕ ХОРОШАЯ ИДЕЯ
convmv
- это простой скрипт на Perl, поэтому код довольно легко редактировать. Он настроен на выход в случае сбоя некоторых тестов, сказав ему игнорировать результаты теста и продолжить, я смог сделать:
../convmv.modified.pl --notest -f utf8 -t windows-1255 זטחם�.docx
Your Perl version has fleas #37757 #49830
cp1255 doesn't cover all needed characters for: "./זטחם�.docx"
mv "./זטחם�.docx" "./����"
Ready!
Это создало файл с именем ????
Я мог бы затем использовать обычный convmv
чтобы изменить его кодировку на utf8 (пришлось использовать find
потому что я не мог дать ????
как имя файла):
find . -type f -exec convmv --notest -f windows-1255 -t utf8 {} \;
$ find . -type f -exec convmv --notest -f windows-1255 -t utf8 {} \;
Your Perl version has fleas #37757 #49830
mv "./����" "./זטחם"
Ready!
Затем я переименовал файл, чтобы добавить расширение docx
(mv זטחם זטחם.docx
) и мог открыть файл в офисе libre.
Это плохая идея, потому что я не решил проблему, которая convmv
корректно конвертировать ваши файлы, я просто проигнорировал ее. Я думаю, проблема в том, что ваше первое ошибочное преобразование добавило странные символы в имя файла, с которым convmv
не знает, как с этим справиться. Я не могу гарантировать, что (или даже предложить мнение о том) не повредит ли это вашим файлам. Я рекомендую сначала попробовать его на одном файле и посмотреть, действительно ли он работает.
Другая проблема заключается в том, что я ожидал, что имя файла будет в том же алфавите, что и в тексте файла, и это не так (я думаю), поэтому вся операция, вероятно, просто провалилась. Так как я не могу читать алфавит, о котором идет речь, я не уверен.
В любом случае, если вы хотите попробовать это, вам нужно внести следующие изменения в /usr/bin/convmv
:
Строка комментария 359, измените это:
die "To prevent damage to your files, we won't continue.\nFirst fix errors or correct options!\n" if ($errors_occurred);
К этому:
#die "To prevent damage to your files, we won't continue.\nFirst fix errors or correct options!\n" if ($errors_occurred);
И измени это (строка 460):
from_to($newname, $opt_f, $opt_t, Encode::FB_QUIET) or die "SHOULD NOT HAPPEN HERE: conversion error, so suitable charset used?: \"$oldfile\"\nTo prevent damage to your files, we won't continue. First fix this!\n";
к этому:
from_to($newname, $opt_f, $opt_t, Encode::FB_QUIET);