LINUX.ORG.RU

Переименование с кириллицы в латиницу


0

0

Есть кучка папок с мп3 файлами. Название некоторых файлов на русском. Плеер на русском названия не поддерживает. Может кто-нибудь видел скрипты для автоматизации задачи переименования файлов? к,ренЭйм не предлагать, изучаю шелл, интересна именно скриптовая реализация.

Спасибо.


Ниже - вырезка из моего скрипта для перекодировки имён файлов. Можно
легко заточить под перевод в транслит.

Дома где-то валяется Python-скрипт, для перевода в транслит и обратно,
с использованием чего-то похожего на нынешний ГОСТ. Скинуть могу
только завтра.

===== CUT HERE =====
recode_one() {
    local dir=$(readlink -f "$1")
    local tmpf=$(tempfile -m 0600)

    [ "$QUIET" == no ] && echo "$dir:"
    find "$dir" -xdev -printf '%p\t%l\n' >$tmpf

    local iconv_opt=-c
    [ "$ENC_FROM" ] && iconv_opt="$iconv_opt -f $ENC_FROM"
    [ "$ENC_TO" ] && iconv_opt="$iconv_opt -t $ENC_TO"

    local OLDIFS=$IFS
    IFS=$'\n'
    for f in $(join -v1 -t $'\n' <(sort <$tmpf) <(eval "iconv $iconv_opt $tmpf" |sort) |tac |cut -d$'\t' -f1); do
        local d2=$(dirname "$f")
        local b2=$(basename "$f" |eval "iconv $iconv_opt")
        local f2=$d2/$b2

        if [ -L "$f" ]; then
            local l1=$(readlink "$f")
            local l2=$(echo "$l1" |eval "iconv $iconv_opt")
            if [ "$l1" != "$l2" ]; then
                #rm -f "$f"
                ln -fsn "$l2" "$f"
                message "Linking '$l2' to '$f'"
                [ "$QUIET" == "no" ] && echo -n "!"
            fi
        fi

        if [ "$f" != "$f2" ]; then 
            mv -f "$f" "$f2"
            message "Moving '$f' to '$f2'"
            [ "$QUIET" == "no" ] && echo -n "+"
        else
            [ "$QUIET" == "no" ] && echo -n "*"
        fi
    done
    IFS=$OLDIFS
    rm -f $tmpf
    echo
}

watashiwa_daredeska ★★★★
()
Ответ на: комментарий от jackill

2watashiwa_daredeska

Спасибо.

2jackill

я так и знал, что я его там видел... Долго не мог там его найти. Извини ,)

ArSeN
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.