Codificação de arquivo txt de conversão em lote

Codificação de arquivo txt de conversão em lote

Tenho cerca de 700 arquivos que foram resultados de um processo de software de legenda oculta. Posso abrir os arquivos no meu PC ou Mac em uma GUI, mas quando abro no servidor com nano, recebo o seguinte:

��0^@0^@;^@0^@0^@;^@0^@0^@;^@0^@0^@ ^@0^@0^@;^@0^@0^@;^@0^@6^@;^@0^@0^@
^@
^@N^@o^@t^@ ^@A^@v^@a^@i^@l^@a^@b^@l^@e^@

Aqui estão os resultados de algumas das coisas de linha de comando que tentei:

#file infile.txt 
infile.txt: data

# file -bi --mime-encoding  infile.txt 
application/octet-stream; charset=binary

recode ../CR-LF infile.txt
#file -bi --mime-encoding  infile.txt

#iconv -f binary -t uff-8 infile.txt > out.txt
iconv: conversions from `binary' and to `uff-8' are not supported

#recode ../CR-LF infile.txt
#recode UTF8..ISO-8859-15 infile.txt 
# file -bi --mime-encoding  infile.txt 
text/plain; charset=utf-16le

#xxd infile.txt | head -5
0000000: fffe 3000 3000 3b00 3000 3000 3b00 3000  ..0.0.;.0.0.;.0.
0000010: 3000 3b00 3000 3000 2000 3000 3000 3b00  0.;.0.0. .0.0.;.
0000020: 3000 3000 3b00 3000 3600 3b00 3000 3000  0.0.;.0.6.;.0.0.
0000030: 0d00 0d0a 004e 006f 0074 0020 0041 0076  .....N.o.t. .A.v
0000040: 0061 0069 006c 0061 0062 006c 0065 00    .a.i.l.a.b.l.e.

O arquivo real é parecido com este (acontece que não foi a melhor escolha, acidentalmente escolhi um sem muita coisa nele):

00;00;00;00 00;00;06;00 Not Available

Então, se eu nano o arquivo, recebo um texto na parte inferior dizendo que ele foi convertido do formato DOS e Mac, mas ainda é lixo. Preciso percorrer os arquivos e importar os dados para um banco de dados, mas é claro que não posso fazer isso se o servidor não conseguir ler o formato.

Gostaria de encontrar uma solução de longo prazo, já que irei gerar muitos deles no futuro e preferiria não usar o Windows PowerShell ou equivalente, mas incorporar a conversão em meu processo.

Responder1

Então a solução para mim acabou sendo usar o recode. Não há muita documentação excelente, mas o truque era usar a opção -f para forçar a alteração.

recode -f UTF-7 *.txt

informação relacionada