Ékezetek eltávolítása fájlnevekből

Alább egy rövid szkript, ami képes eltávolítani a fájlok neveiből az ékezeteket. Pontosabban kiírja az ehhez szükséges mv parancsokat a kimenetre.

Elboldogul a könyvtárakkal is, és azzal az esettel is, amikor több ékezetes könyvtár van egy útvonalon.

#!/bin/bash

# Ékezettelenítő, v1.0
# palacsint, http://palacsint.hu/, 2010. 08. 28.

remove_ekezet() {
    echo "$@" | sed y/áéíóöőúüűÁÉÍÓÖŐÚÜŰ/aeiooouuuAEIOOOUUU/
}

DIR=.
if [ $# -eq 1 ]
then
    DIR=$1
fi

find $DIR -type f -or -type d | while read SOURCE
do
    DEST=$(remove_ekezet "$SOURCE")

    SOURCE_BASENAME=$(basename "$SOURCE")
    DEST_BASENAME=$(basename "$DEST")

    if [ "$SOURCE_BASENAME" = "$DEST_BASENAME" ]
    then
        # a fajl neve nem valtozik
        continue
    fi

    SOURCE_DIRNAME=$(dirname "$SOURCE")

    # ÁÁÁ/ÉÉÉ/ÍÍÍ eset kezelése
    TRANSLATED_SOURCE_DIRNAME=$(remove_ekezet "$SOURCE_DIRNAME")
    CURRENT_SOURCE="${TRANSLATED_SOURCE_DIRNAME}/${SOURCE_BASENAME}"

    echo "mv \"${CURRENT_SOURCE}\" \"$DEST\""
done

Letöltés: ekezettelenito.sh

Tartalom átvétel