通过Perl更改文件名

时间:2015-06-03 09:40:20

标签: regex linux perl find

如何将文件名从以下符号更改为:SomeCodeFile.extension到C / C ++表示法:some_code_file.extension。我想使用Perl + Find + Regex打印这些名称。

1 个答案:

答案 0 :(得分:2)

您可以使用正则表达式:

perl -e 'for $f (@ARGV) {
             ($n = $f) =~ s/(?<=.)([[:upper:]])/_\l$1/g;
             rename $f, lcfirst $n;
         }' SomeCodeFiles*
  • [[:upper:]]匹配大写字母。
  • (?<=.)是断言的背后,即字母前面有一些东西(我们不想要_some_code_file.ext
  • \l将以下字母更改为小写(类似于lcfirst

请注意,在某些情况下(x_m_l2_j_s_o_n.cu_r_l__validator.cpp),结果可能会令人不愉快。