Пакетное преобразование HTML-файлов Mac OS X в UTF-8 с Unix (LF) - PullRequest
0 голосов
/ 08 октября 2010

Я нахожусь на Mac OS X с Snow Leopard.

Мне нужно выполнить пакетное преобразование большого количества файлов .htm, которые были изначально созданы в Windows, в UTF-8 с переносами строк Unix (LF).

Я могу переименовать все файлы .html с помощью NameMangler.

Я могу выполнить поиск / замену всех файлов, чтобы обновить все гиперссылки, чтобы отразить изменение расширения на .html, используя TexFinderX.

Теперь последний шаг - выполнить пакетное преобразование в UTF-8 и с переносами строк Unix (LF).

Кто-нибудь знает приложение, которое может это сделать? Я надеюсь, что мне не нужно вручную открывать каждый из файлов в текстовом редакторе и сохранять каждый в отдельности. Я боюсь, что могу случайно пропустить некоторые файлы ... и это займет много времени.

ТИА, Linda

Ответы [ 2 ]

1 голос
/ 08 октября 2010

Вы захотите проверить этот dos2unix порт для MacOS.Я не использовал его сам, так как у меня нет Mac, но dos2unix - это общая утилита Unix для преобразования файлов Windows в файлы Unix.

0 голосов
/ 16 декабря 2010

Это было в Linux, но должно работать в Mac OS.Возможно, вам придется проверить параметры команды find, которые могут немного отличаться в Mac OS.Если вы не можете найти recode для Mac, вы можете найти iconv и настроить параметры.Я на самом деле просто использовал этот сумасшедший, не очень-единственный, файл с 2400+, из которых 1400+ были преобразованы:

 find . -regextype posix-awk -iregex ".*\.(txt|htm|html|cgi|php|pl|pm)" | while read f; do t=`mktemp "$f.utf8.XXXXX"`; if [ ! "$?" = 0 ]; then echo "ERROR: cannot make temp file for $f"; continue; fi; echo recoding $f to $t; if cat "$f" | recode cp1252/..utf8/ >"$t" ; then if diff -wq "$f" "$t"; then echo No change: $f; rm "$t"; else mv "$f" "$f.cp1252" && mv "$t" "$f" && echo OK $f; fi; else echo "ERROR: $?"; fi; done | tee -a convert-results.txt

Вот то же самое в нескольких строках, чтобы сделать его немного более читабельным:

find . -regextype posix-awk -iregex ".*\.(txt|htm|html|cgi|php|pl|pm)" | \
  while read f; do
    t=`mktemp "$f.utf8.XXXXX"`
    if [ ! "$?" = 0 ]; then
      echo "ERROR: cannot make temp file for $f"
      continue
    fi
    echo recoding $f to $t
    if cat "$f" | recode cp1252/..utf8/ >"$t" ; then
      if diff -wq "$f" "$t"; then
        echo No change: $f
        rm "$t"
      else
        mv "$f" "$f.cp1252" && mv "$t" "$f" && echo OK $f
      fi
    else
      echo "ERROR: $?"
    fi
  done \
| tee -a convert-results.txt

Я использовал cp1252/..utf8/, потому что у меня уже были окончания строк в LF и я хотел их сохранить.Возможно, вам придется адаптировать это к вашим файлам и прочитать справочную страницу перекодирования.Или, возможно, iconv также обрабатывает окончания строк?

Конечно, создайте резервную копию всего дерева каталогов перед выполнением любой такой команды!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...