Karakterkódolás változtatása
Adott egy régi projekt, CP1250 karakterkódolású fájlokkal, Windows sorvége jelekkel (CRLF). A migráció során szeretnénk ebből UTF-8 karakterkódolású állományokat gyártani, a sorvége jeleket meghagyva.
Erre megfelelő eszköz a iconv
nevű Linux-os parancs, azonban ez csak új
fájlt képes gyártani, tehát szükség van még egy átnevezésre is. Azonban
létezik egy recode
parancs is, mely a paraméterként átadott fájlt
módosítja, és a sorvége karaktereket is tudja konvertálni (gyakorlatilag
az iconv
, dos2unix
, unix2dos
parancsok egyesítve).
Nézzük a scriptet, mely rekurzívan elvégzi a konverziót (mind a két eszközzel mutatja a megoldást):
#! /bin/sh
find . -name \*.java -type f | \
(while read file; do
echo $file
# iconv -f CP1250 -t UTF-8 "$file" > "$file"-utf8
# mv "$file"-utf8 "$file"
recode cp1250/CRLF..utf-8/CRLF $file
done)
Cygwin-ben is remekül működik.