5

我有大量的俄语文件名(以及一些斯洛文尼亚语和希腊语)。要在我的车上播放它们,歌曲名称必须只使用西欧字符。

  1. 有没有可以重命名这个文件的程序?

  2. 如果没有,是否有每个西里尔字母和希腊字母使用哪些字母的列表?

谢谢 - 戴夫

4

6 回答 6

3

试试 den4b 的一个名为 ReNamer 的免费程序,它对我很有用。

http://www.den4b.com/?x=products

于 2013-02-07T13:39:59.827 回答
3

为此,我制作了一个 shell 脚本,基于uconvicu-devtools包中执行音译:

for f in "$@"
do
    if [ ! -f "$f" ]; then
        echo "$(basename $0) warn: this is not a regular file (skipped): $f" >&2
        continue
    fi

    NEWFILENAME="$(basename "$f")"
    NEWFILENAME="$( echo -n "$NEWFILENAME" | { transliterate || uconv -x 'Any-Latin;Latin-ASCII' || cat ; } )" # convert non-latin chars using my transliterate script OR uconv from the icu-devtools package
    NEWFILENAME="$( echo -n "$NEWFILENAME" | iconv -f UTF-8 -t ascii//TRANSLIT//IGNORE )"
    NEWFILENAME="$( echo -n "$NEWFILENAME" | tr -c '[A-Za-z0-9._\-]' '_' \
        | tr '\[\]' '_' \
        | sed -e 's/__*/_/g' \
        | sed -e 's/_\././g' )"
    # TODO: remove all dots except the last?
    
    if [ -f "$(basename $f)/$NEWFILENAME" ]; then
        echo "$(basename $0) warn: target filename already exists (skipped): $(basename $f)/$NEWFILENAME" >&2
        continue
    fi
    if [ "$(basename $f)" != "$NEWFILENAME" ]; then
        echo "\`$f' -> \`$NEWFILENAME'"
        mv -i "$f" "$NEWFILENAME"
    fi
done
于 2016-04-06T07:19:02.847 回答
2

这是俄语音译表:

如果你安装了 python,你可以使用这个脚本:

它似乎做得很好,您也可以根据自己的需要进行更改。它对我来说不是开箱即用的,我不得不encode从以下两行中删除调用(前面给出的行号):

117 print fpath.encode('utf-8')
136 print 'Copying %s to %s' % (fpath.encode('utf-8'), new_fpath)

即更改为:

117 print fpath
136 print 'Copying %s to %s' % (fpath, new_fpath)

但随后工作正常,例如(假设您将上面的脚本与对文件的更改放在同一个文件夹中transliterate.py,然后chmod u+x transliterate.py使其可执行):

$ mkdir a
$ touch a/сказать
$ ./transliterate.py a
a/сказать
Copying a/сказать to a/skazat'

希望这可以帮助。

于 2012-03-03T01:11:41.643 回答
2

这是改进的 python 脚本,它将文件重命名为拉丁文并删除旧文件,并将所有空格替换为下划线字符。

https://gist.github.com/braman/a8504c15ca537ea49c6a

于 2015-03-14T20:44:30.367 回答
1

大卫,

我不知道有任何程序会自动执行此操作(尽管根据以下信息,我敢打赌,您可以让一位计算机极客朋友为您执行此操作以换取披萨。)实际上,该程序真的不会很难用 Perl 编写。

无论如何,这里有一些信息可以帮助您为每个西里尔字母、斯洛文尼亚字母和希腊字母选择使用哪些字母。

http://en.wikipedia.org/wiki/Romanization_of_Russian

http://en.wikipedia.org/wiki/Slovene_alphabet

http://en.wikipedia.org/wiki/Romanization_of_Greek

希望能有所帮助!

于 2012-03-03T00:58:45.710 回答
0

我还制作了简单的shell 脚本,它不依赖于任何 3rd 方包sed,但它应该默认安装在大多数 Linux 发行版上。

默认情况下,它只音译西里尔字母,但您可以使用上面提供的 Wikipedia 文章链接 - http://en.wikipedia.org/wiki/Romanization_of_Greek轻松地用希腊字符扩展它

于 2019-02-20T21:25:09.943 回答