【发布时间】:2010-09-14 05:30:29
【问题描述】:
我必须递归地重命名一个完整的文件夹树,这样任何地方都不会出现大写字母(它是 C++ 源代码,但这不重要)。
忽略 CVS 和 Subversion 版本控制文件/文件夹的奖励积分。首选方式是 shell 脚本,因为任何 Linux 机器上都应该有 shell。
关于文件重命名的细节有一些有效的论据。
我认为应该覆盖具有相同小写名称的文件;这是用户的问题。当在忽略大小写的文件系统上签出时,它也会用后者覆盖第一个。
我会考虑 A-Z 字符并将它们转换为 a-z,其他一切都只是在提出问题(至少在源代码方面)。
在 Linux 系统上运行构建需要该脚本,所以我认为应该省略对 CVS 或 Subversion 版本控制文件的更改。毕竟,这只是一个临时结账。也许“出口”更合适。
【问题讨论】:
-
之前发布的内容可以开箱即用,也可以针对简单情况进行一些调整,但是在运行批量重命名之前,您可能需要考虑一些情况: 1. 应该发生什么如果您在路径层次结构中有两个或多个相同级别的名称,它们仅大小写不同,例如
ABCdef、abcDEF和aBcDeF?重命名脚本应该中止还是只是警告并继续? 2. 如何为非 US-ASCII 名称定义小写字母?如果可能存在这样的名称,是否应该首先执行一次检查和排除通过? 3.如果您正在运行重命名操作