fjerne norske tegn

Jeg synkroniserer filer mellom Windows, Linux og OSX med Unison. Unisons utvikler sier siste versjon skal takle forskjellige tegnsett, men jeg fikk alikevel problemer med norske tegn. Løsningen var for meg å fjerne alle norske tegn i filnavn og katalognavn i mappen jeg synkroniserer. For å gjøre dette laget jeg et lite bash-skript. Dette må kjøres på Linux eller OSX, evt. under cygwin på Windows. Koden følger under.


#!/bin/bash

[ $? -ne 1 ] || { echo "usage: $0 <dir>"; exit 1; }

[ -d $1 ] || { echo "usage: $0 <dir>"; exit 2; }

which find &>/dev/null || { echo "could not find command 'find'"; exit 3; }
which egrep &>/dev/null || { echo "could not find command 'egrep'"; exit 4; }
which sed &>/dev/null || { echo "could not find command 'sed'"; exit 5; }

redo=1
until [ $redo -eq 0 ]; do
  redo=0
  find $1 -type d -print | \
  while read dir; do
    echo "$dir" | egrep -qi 'æ|ø|å' && {
      newdir=`echo "$dir" | sed -e 's/æ/ae/g' -e 's/ø/o/g' -e 's/å/aa/g' -e 's/Æ/AE/g' -e 's/Ø/O/g' -e 's/Å/AA/g'`
      mv -v "$dir" "$newdir" 2>/dev/null || redo=1
    }
  done
  find $1 -type f -print | \
  while read fn; do
    echo "$fn" | egrep -qi 'æ|ø|å' && {
      newfn=`echo "$fn" | sed -e 's/æ/ae/g' -e 's/ø/o/g' -e 's/å/aa/g' -e 's/Æ/AE/g' -e 's/Ø/O/g' -e 's/Å/AA/g'`
      mv -v "$fn" "$newfn" 2>/dev/null || redo=1
    }
  done
done

Husk at du må gjøre filen kjørbar med kommandoen

chmod u+x filnavn

Tags: , , , , , ,

Legg inn et svar