<分区>
包括扩展名。例如 file.txt --> FILE.TXT
如果有人能指出我的大致方向,那么我将不胜感激:)
这里只是一些随机文本,因为字符数对于 Stackoverflow 来说太少了......
<分区>
包括扩展名。例如 file.txt --> FILE.TXT
如果有人能指出我的大致方向,那么我将不胜感激:)
这里只是一些随机文本,因为字符数对于 Stackoverflow 来说太少了......
最佳答案
最初的解决方案是:
rename 'y/a-z/A-Z/' *
它获取当前目录中的每个文件/目录,并将 a-z 范围内的每个字符更改为其对应的大写版本。
rename
的问题是没有进入目录以递归应用重命名的选项,并且 *
字符扩展为当前目录的名称(文件和目录).更重要的是,这个命令也会重命名目录,但你只想重命名文件。
要以递归方式执行此操作,但仅限于文件,您可以使用 find
,它以递归方式进行搜索,并将每个文件传递给 rename
:
find . -type f -execdir rename 'y/a-z/A-Z/' {} \;
此命令仅搜索文件,并对找到该文件的目录(execdir
选项)内的每个文件执行rename
。这很重要,因为否则 find
会将文件的完整路径(例如:./fold1/fold2/file.txt')传递给 rename
,后者将依次尝试将完整路径传递给大写:(./FOLD1/FOLD2/FILE.TXT) 这将导致错误,因为文件夹 FOLD1
和 FOLD2
不存在。
关于Linux:如何将目录中的所有文件重命名为大写?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30303480/