我有一堆文件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的:
s/\([A-Z]\)/_\L\1/g
:为首都,以搜索小号ubstitutes他们为小写并添加下划线
s/^.\/_//
: 删除由于第一个字母是大写而插入的任何下划线(即您不想要_file_name_x.cpp
.
考虑在 mv 上使用-v
,--verbose
来解释正在做什么。