通过 Perl 更改文件名

Change file names by Perl

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

您可以使用正则表达式:

perl -e 'for $f (@ARGV) {
             ($n = $f) =~ s/(?<=.)([[:upper:]])/_\l/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)。