- Lähtökohta
- Minulla on joukko tiedostoja joiden nimissä on ä- ja ö-kirjaimia. Kaikki tiedostonimet koostuvat yksinomaan pienistä kirjaimista, eli kirjainmerkeistä a-ö. Haluan muuntaa nimet siten, että ä:t korvautuvat a-kirjaimilla ja ö:t o-kirjaimilla. Aion käyttää muuntamiseen
tr
-komentoa. - Ongelma
- Tr-komento tulkitsee sille antamiani skandinaavisia kirjaimia sisältäviä muunnossääntöjä väärin ja ennalta-arvaamattomalla vaikuttavalla tavalla. Seuraavassa on tästä esimerkkejä:
$ echo tiedostonnimi-jossa-on-ä | tr ä a tiedostonnimi-jossa-on-aa $ echo tiedostonnimi-jossa-on-ää | tr ä a tiedostonnimi-jossa-on-aaaa $ echo tiedostonnimi-jossa-on-äö | tr ä a | tr ö o tiedostonnimi-jossa-on-aaao $ echo tiedostonnimi-jossa-on-öö | tr ä a | tr ö o tiedostonnimi-jossa-on-aoao $ echo tiedostonnimi-jossa-on-öä | tr ä a | tr ö o tiedostonnimi-jossa-on-aoaa
- Ongelman syy
- Tr-komento ei tue komentotulkissani käytössä olevaa UTF-8 -koodausta.
- Ratkaisu
- Käytän tr-komennon sijasta
sed
-komentoa skandinaavisten kirjainten muuntamiseen, seuraavalla tavalla:for file in *ä*; do mv $file `echo $file | sed -e 's/ä/a/g'`; done for file in *ö*; do mv $file `echo $file | sed -e 's/ö/o/g'`; done