Perl one-liner在文件名末尾添加一个字符串

时间:2013-04-08 08:36:50

标签: linux perl

我在目录中有一些HTML和JavaScript文件。我想在每个JavaScript(name.js)文件的末尾添加“_backup”。它的one-liner是什么?

3 个答案:

答案 0 :(得分:4)

选择你的毒药:

  1. <强> File::Copy

    use File::Copy 'move';
    for ( glob "*.js" ){  # Platform independent
        move( $_, "${_}_backup" ) or warn "Failed to copy '$_'";
    }
    
  2. rename功能

    for ( glob "*.js" ){   # Not platform independent
        rename( $_, "${_}_backup" ) or warn "Failed to copy '$_'";
    }
    
  3. * nix rename实用程序

    $ rename .js .js_backup *.js
    

答案 1 :(得分:1)

-i选项使用给定的后缀创建备份文件,然后给出一个空脚本。

perl -i_backup -p -e "" *.js; rm *.js

这实际上是一个双线

感谢Zaid's answer

perl -e 'rename($_,$_."_backup") for (glob "*.js");'

答案 2 :(得分:0)

这是一条稍长的线,但它是一个Perl单线!

我假设你想要名为

的文件
abc.js
def.js
dog.js

重命名为

abc_backup.js
def_backup.js
dog_backup.js

perl -e 'for(@ARGV) { ($bname)=/(.*)\.js/; rename $_, "$1_backup.js"; } ' *js

大多数Linux发行版都包含一个“重命名”程序,它实际上是用Perl编写的,并且重命名这样的操作;见man rename