fjerne norske tegn
Friday, 18. December 2009Jeg 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