在Bash中对重音文件进行通配和重命名(续)

时间:2019-04-11 22:25:39

标签: bash macos character-encoding glob

这是以下问题的延续:

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的本地磁盘上。我想最终重命名的文件位于服务器上,如果这很重要,我不熟悉其文件系统。无论如何,在两组文件上运行这些命令时,我都会遇到相同的问题。

有人会知道如何使用变音符号处理文件名吗?

0 个答案:

没有答案