这是以下问题的延续:
Globbing accented files in Bash
我在那里问过,但是受到鼓励提出一个新问题。
我大约有20,000万个文件,其中许多文件需要重命名。如果它们具有相同的前缀,则无论扩展名如何,都将按顺序编号。这不是我的问题,它只是解释了我在下面的rename
命令中使用的选项。
问题::多个文件名包含带重音符号的字符,这似乎阻止了glob的扩展。因此,rename
命令不会重命名适当的文件。
我在运行Bash 5.0.3的macOS 10.14.4上。
这是一个最小的示例:
#! /usr/local/bin/bash
filenamestem="Vvért, Cdeós"
rename -n -X -N 001 -e '$_ = "'"${filenamestem}"'_$N"' "${filenamestem}"*
以下是添加set -x
时的输出:
+ filenamestem='Vvért, Cdeós'
+ rename -n -X -N 001 -e '$_ = "Vvért, Cdeós_$N"' 'Vvért, Cdeós*'
'Vvért, Cdeós*' would be renamed to 'Vvért, Cdeós_001'
以下是目录中的一些文件:
'Vvért, Cdeós copy.doc'
'Vvért, Cdeós copy.pdf'
'Vvért, Cdeós-2 copy.docx'
'Vvért, Cdeós-2.docx'
'Vvért, Cdeós.doc'
'Vvért, Cdeós.pdf'
当文件名缺少重音符号或其他变音符号时,该命令将很好地发挥作用。
我尝试过
rename -n -X -N 001 -e '$_ = "'"${filenamestem}"'_$N"' "$(iconv -t UTF-8-MAC <<< "${filenamestem}")"*
根据上述问题的解决方案,但收到相同的输出:
+ filenamestem='Vvért, Cdeós'
++ iconv -t UTF-8-MAC
+ rename -n -X -N 001 -e '$_ = "Vvért, Cdeós_$N"' 'Vvért, Cdeós*'
'Vvért, Cdeós*' would be renamed to 'Vvért, Cdeós_001'
最后,我正在测试的文件位于使用APFS的本地磁盘上。我想最终重命名的文件位于服务器上,如果这很重要,我不熟悉其文件系统。无论如何,在两组文件上运行这些命令时,我都会遇到相同的问题。
有人会知道如何使用变音符号处理文件名吗?