Linux:如何将目录中的所有文件重命名为大写?

标签 linux shell awk sed rename

<分区>

包括扩展名。例如 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) 这将导致错误,因为文件夹 FOLD1FOLD2 不存在。

关于Linux:如何将目录中的所有文件重命名为大写?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30303480/

相关文章:

java - Docker Entrypoint.sh 用于自更新程序

perl - 如何删除文件中的第一行?

linux - gawk 和 shell 脚本的单引号问题

linux - 使用exec命令的目的是什么

c - 嵌入式linux中的PAGE_SIZE

linux - 如何在 shell 脚本函数中定义 var

shell - csh 启动脚本

linux - 从 CRAN Ubuntu 存储库安装 R : No Public Key Error

php - Apache 服务器运行 html 代码但不识别 php 代码

linux - 如何使用 sed 或 awk 命令根据另外两个变量的值设置一个变量