Para criar um arquivo com falha semelhante, podemos usar esse script:
{ printf '%*s' "179"; printf '\x81'; printf '%*s' "20"; } >infile
Então este comando irá imprimir em qual posição o arquivo falha:
$ isutf8 infile
infile: line 1, char 1, byte offset 180: invalid UTF-8 code
Então, isso testará todos os arquivos python ( .py
) no pwd para um código inválido na posição 180:
$ isutf8 ./*.py | grep "offset 180"
Ou ainda mais flexível, um intervalo de deslocamentos (gnu regex estendido):
$ isutf8 ./*.py | grep -E "offset (17|18)"
Ou, um teste específico para arquivos dentro de todo o diretório:
$ find . -iname "*.py" -type f -exec bash -c 'isutf8 "$1" | grep -E "offset (17|18)"' Find {} \;