Для создания аналогичного сбойного файла мы можем использовать этот скрипт:
{ printf '%*s' "179"; printf '\x81'; printf '%*s' "20"; } >infile
Затем эта команда выведет, на какой позиции файл сбойный:
$ isutf8 infile
infile: line 1, char 1, byte offset 180: invalid UTF-8 code
Таким образом, это проверит все файлы python (. py
) файлы в pwd на недопустимый код в позиции 180:
$ isutf8 ./*.py | grep "offset 180"
Или еще более гибко, диапазон смещений (gnu extended regex):
$ isutf8 ./*.py | grep -E "offset (17|18)"
Или специфический тест для файлов внутри всего каталога:
$ find . -iname "*.py" -type f -exec bash -c 'isutf8 "$1" | grep -E "offset (17|18)"' Find {} \;