如何安全地重命名文件/目录,在不区分大小写的文件系统上更改大小写

问题描述 投票:0回答:1

最近我在 Linux 上使用文件管理器,尝试重命名具有相同字符但大小写不同的文件。

文件管理器报告该文件已存在(这在不区分大小写的文件系统上有意义)。

有什么便携式方法可以检查文件是否可以重命名,而不会意外地与其自身匹配?


更新,我在 Linux 上找不到支持此功能的文件管理器(在 vfat 上),因此这可能不受支持(至少没有令人讨厌的黑客攻击)。

甚至

mv nAme NaME
报告
mv: 'nAme' and 'NaME' are the same file

请参阅有关该主题的详细讨论

c filesystems posix
1个回答
0
投票

如果您愿意执行临时重命名步骤,那么通过使用 perl-rename 实用程序,您可以执行直接逆字符映射,其中您将大写字母字符移动一个位置,然后将它们移回,但要改为小写:

prename 'y/A-Z/B-ZA/' -- *
prename 'y/B-ZA/a-z/' -- *

注意:出于安全原因,如果 glob 扩展为以

-
开头的文件名,可选参数的结尾将使用
--
显式声明,否则某些文件名可能会被错误地视为可选参数。

© www.soinside.com 2019 - 2024. All rights reserved.