【发布时间】:2019-06-16 02:36:44
【问题描述】:
我有一个需要在任何平台(Windows、Mac、Linux、...)上运行的 Perl 脚本。它的部分功能是重命名文件,但我不希望它覆盖现有文件。假设脚本名为“my_rename”,它采用与“rename”函数相同的参数,用户执行以下命令:
my_rename test.txt test.TXT
如果 -e "test.txt" 和 -e "test.TXT" 都返回 true,则会出现问题。以下是我想在以下情况下如何处理这种情况:
案例 1:在区分大小写的文件系统上:
- 由于“test.TXT”存在错误而中止
案例 2:在不区分大小写的文件系统上,现有文件名的实际大小写为“test.TXT”:
- 警告文件名未更改
案例 3:在不区分大小写的文件系统上,现有文件名的实际大小写不是“test.TXT”:
- 将文件重命名为“test.TXT”
由于这个脚本必须是可移植的,它不能依赖于系统相关的函数或实用程序。
任何建议将不胜感激。
- 菲尔
【问题讨论】:
标签: perl case-sensitive file-rename case-insensitive