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

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

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

答案1

这个 bash 命令可以完成这个任务。从命令行进入文件夹,然后运行以下行:

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

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

#!/bin/bash
for file in ./* ; do
    mv "$file" "$(echo $file|sed -e 's/\([A-Z]\)/_\L\1/g' -e 's/^.\/_//')"
done

基本上sed是用来操作字符串的。有两个表达式:

  1. s/\([A-Z]\)/_\L\1/g:搜索大写字母s将其替换为小写并添加下划线

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

考虑在 mv 上使用-v,--verbose来解释正在做的事情。

相关内容