Есть ли способ, чтобы я мог перечислить все файлы, кодировка которых не является UTF-8?
Возможно, не так легко в bash, но это тривиальная задача, например. Python:
import os.path
for child in os.path.listdir(TARGETDIR):
child= os.path.join(TARGETDIR, child)
if os.path.isfile(child):
content= open(child, 'rb').read()
try:
unicode(content, 'utf-8')
except UnicodeDecodeError:
open(child, 'wb').write(unicode(content, 'iso-8859-1'))
Это предполагает, что любой файл, который может интерпретироваться как действительная последовательность UTF-8 , равен единице (и поэтому может быть оставлен в покое), тогда как все, что не должно быть ISO-8859-1.
Это разумное предположение, если эти два являются единственно возможными кодировками, потому что действительные последовательности UTF-8 (по крайней мере, из двух символов с верхним битом в определенном порядке) относительно редки в реальном латинском тексте, где мы склонны только использовать нечетные одиночные акцентированные символы здесь и там.