Este script, adaptado da ideia de harrymc , que recodifica condicionalmente um arquivo (baseado na existência de certos caracteres escandinavos codificados em UTF-8), parece funcionar razoavelmente bem para mim.
$ cat recode-to-utf8.sh
#!/bin/sh
# Recodes specified file to UTF-8, except if it seems to be UTF-8 already
result='grep -c [åäöÅÄÖ] $1'
if [ "$result" -eq "0" ]
then
echo "Recoding $1 from ISO-8859-1 to UTF-8"
recode ISO-8859-1..UTF-8 $1 # overwrites file
else
echo "$1 was already UTF-8 (probably); skipping it"
fi
(Arquivos de processamento em lote são obviamente uma questão simples, por exemplo, for f in *txt; do recode-to-utf8.sh $f; done
.)
NB : isso depende totalmente do próprio arquivo de script sendo UTF-8. E como esta é obviamente uma solução muito limitada adequada para o tipo de arquivos que eu tenho, sinta-se livre para adicionar melhores respostas que resolvam o problema de uma forma mais genérica.