将文件夹中的所有文件从驼峰式重命名为小写,并用下划线分隔单词

Man*_*dMs 5 rename

我有一堆文件FileNameX.cpp,我想将它们全部重命名为各自的file_name_x.cpp.

Had*_*dog 11

这个 bash 命令可以完成这项工作。从命令行,输入文件夹,然后运行以下行:

for file in ./* ; do mv "$file" "$(echo $file|sed -e 's/\([A-Z]\)/_\L\1/g' -e 's/^.\/_//')" ; done
Run Code Online (Sandbox Code Playgroud)

在脚本形式中,它看起来像这样:

for file in ./* ; do mv "$file" "$(echo $file|sed -e 's/\([A-Z]\)/_\L\1/g' -e 's/^.\/_//')" ; done
Run Code Online (Sandbox Code Playgroud)

基本上sed用于操作字符串。这里有两种è Xpressions的:

  1. s/\([A-Z]\)/_\L\1/g:为首都,以搜索小号ubstitutes他们为小写并添加下划线

  2. s/^.\/_//: 删除由于第一个字母是大写而插入的任何下划线(即您不想要_file_name_x.cpp.

考虑在 mv 上使用-v,--verbose来解释正在做什么。