iconv
é provavelmente o que você deseja usar. iconv -l
mostrará as codificações disponíveis e você poderá usar alguns comandos para recodificar todas:
# all text files are in ./originals/
# new files will be written to ./newversions/
mkdir -p newversions
cd originals
for file in *.txt; do
cat $file | iconv -f ASCII -t utf-8 > ../newversions/$file;
done
Se você quiser fazer isso com arquivos que não são codificados (porque eles estão em todo o lugar), é necessário trazer mais alguns comandos: find
, file
, awk
e sed
. Os dois últimos estão lá apenas para processar a saída do arquivo.
for file in find . -type f -exec file --mime {} \; | grep "ascii" | awk '{print }' | sed s/.$//; do
...
Eu não tenho idéia se isso realmente funciona, então eu certamente não iria executá-lo de nada, mas o diretório menos importante que você tem (faça uma pasta de teste com alguns arquivos ASCII conhecidos). A sintaxe do find pode impedir que ele esteja dentro de um loop for. Eu espero que alguém com mais experiência possa pular lá e resolvê-lo para fazer a coisa certa.