我可以使用 Bash 在文件名中的 UpperCamelCase、lowerCamelCase 和 dash-case 之间进行转换吗?

And*_*dra 2 bash camelcasing

我正在与另一位开发人员合并工作。我正在使用 UpperCamelCasing,但我们决定遵循Google 的 HTML 样式指南,使用小写字母并用连字符分隔单词。这个决定要求我重命名文件系统上的一些文件。我首先认为这很容易,因为我经常使用 bash 来重命名大量文件。不幸的是,在 Casing 样式上重命名似乎有点复杂,我没有设法找到一种方法。

我可以使用 Bash 将文件从一种命名约定转换为另一种命名约定吗?

jks*_*hah 5

尝试使用rename带有-f选项的命令以所需的替换重命名文件。

rename -f 's/([a-z])([A-Z])/$1-$2/g; y/A-Z/a-z/' <list_of_files>
Run Code Online (Sandbox Code Playgroud)

如果您还想<list_of_files>使用某种模式进行提取,例如 extension .ext,则需要find与上述命令结合使用xargs

find -type f -name "*.ext" -print0 | xargs -0 rename -f 's/([a-z])([A-Z])/$1-$2/g; y/A-Z/a-z/'
Run Code Online (Sandbox Code Playgroud)

例如,如果您想重命名所有文件 pwd

$ ls
dash-case
lowerCamelCase
UpperCamelCase

$ rename -f 's/([a-z])([A-Z])/$1-$2/g; y/A-Z/a-z/' *

$ ls
dash-case
lower-camel-case
upper-camel-case
Run Code Online (Sandbox Code Playgroud)