我有大量的俄语文件名(以及一些斯洛文尼亚语和希腊语)。要在我的车上播放它们,歌曲名称必须只使用西欧字符。
有没有可以重命名这个文件的程序?
如果没有,是否有每个西里尔字母和希腊字母使用哪些字母的列表?
谢谢 - 戴夫
我有大量的俄语文件名(以及一些斯洛文尼亚语和希腊语)。要在我的车上播放它们,歌曲名称必须只使用西欧字符。
有没有可以重命名这个文件的程序?
如果没有,是否有每个西里尔字母和希腊字母使用哪些字母的列表?
谢谢 - 戴夫
试试 den4b 的一个名为 ReNamer 的免费程序,它对我很有用。
为此,我制作了一个 shell 脚本,基于uconv
从icu-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
这是俄语音译表:
如果你安装了 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'
希望这可以帮助。
这是改进的 python 脚本,它将文件重命名为拉丁文并删除旧文件,并将所有空格替换为下划线字符。
大卫,
我不知道有任何程序会自动执行此操作(尽管根据以下信息,我敢打赌,您可以让一位计算机极客朋友为您执行此操作以换取披萨。)实际上,该程序真的不会很难用 Perl 编写。
无论如何,这里有一些信息可以帮助您为每个西里尔字母、斯洛文尼亚字母和希腊字母选择使用哪些字母。
http://en.wikipedia.org/wiki/Romanization_of_Russian
http://en.wikipedia.org/wiki/Slovene_alphabet
http://en.wikipedia.org/wiki/Romanization_of_Greek
希望能有所帮助!
我还制作了简单的shell 脚本,它不依赖于任何 3rd 方包sed
,但它应该默认安装在大多数 Linux 发行版上。
默认情况下,它只音译西里尔字母,但您可以使用上面提供的 Wikipedia 文章链接 - http://en.wikipedia.org/wiki/Romanization_of_Greek轻松地用希腊字符扩展它