Use o modo clássico de unix / linux e combine algumas ferramentas simples, por exemplo,
#!/bin/sh
ls *.srt | while read file ; do
charset='file -bi $file | sed 's/.*charset=//''
echo '###' $file $charset
case "$charset" in
us-ascii) charset="";; # no conversion needed
utf-8) charset="";; # no conversion needed
binary) charset="";; # no charset detected
*) ;;
esac
if [ "$charset" != "" ] ; then
iconv -f "$charset" -t UTF-8 -o "$file".utf "$file" && mv "$file".utf "$file"
fi
done
Teste a primeira correção de autodetecção sem iconv line.
Sugiro usar case para limitar a conversão a alguns conjuntos de caracteres explicitamente listados.
Formas alternativas de autodetecção de charset são fornecidas em link