Пытаюсь преобразовать несколько файлов SQL из ISO8859-1 в UTF-8.
Выполняю следующую команду:
iconv -f ISO_8859-1 -t UTF-8 *.sql
. вывод их контента на терминал очень длинный и после окончания вывода они не конвертируются. Они остаются такими же. Я хотел бы иметь возможность конвертировать и не видеть вывод.
iconv
по умолчанию отправляет свой вывод на стандартный вывод, что объясняет поведение того, что вы видели. Вы можете направить вывод в файл, используя опцию -o
, но это сгенерирует только один выходной файл и, вероятно, не поможет вам обновить файлы на месте. Возможно, попробуйте что-то вроде этого:
for file in *.sql; do
iconv -f ISO-8859-1 -t UTF-8 -o "$file".utf "$file" && mv "$file".utf "$file"
done
, который преобразует каждый файл и сохраняет результат во временном файле, перемещая его в исходное имя файла, если преобразование прошло успешно.
Также возможно использовать rsync для этой задачи, с одним преимуществом, вы будете хранить резервную копию. Если один из преобразованных файлов уже находится в целевой кодификации, вы испортите его.
rsync -va --iconv=iso88591,utf8 /source/latin1/ /destination/utf8/