从短perl脚本构建perl单行并结合到其他行

时间:2011-01-21 12:38:14

标签: perl

继续我之前的问题(但其他问题),

根据以下perl脚本(rename.pl)

如何从rename.pl脚本构建perl one-liners行 为了替换:/var/tmp/rename.pl(来自find命令...) 使用one-liners perl语法?

(我不想使用rename.pl脚本,)

   find  /  -name "$OLD_HOST"  -print0 | xargs -0 /var/tmp/rename.pl 'print "changing $_\n"; s/$OLD_HOST/host_10/g'

rename.pl脚本:

  #!/usr/bin/perl

   $op = shift;
     for (@ARGV) {
      $was = $_;
      eval $op;
      die $@ if $@;
      rename($was,$_) unless $was eq $_;
    }

2 个答案:

答案 0 :(得分:0)

为什么不使用经过防弹,调试过的rename.pl脚本?

find ... |
xargs -0 perl -e 'my $op - shift; foreach (@ARGV)
                  { my $was = $_; eval $op; die $@ if $@;
                    rename($was, $_) unless $was eq $_; }' \
              s/x/y/g

答案 1 :(得分:0)

这个单行将在文件名中找到带有数字的zip文件,并打印一些“mv”shell命令,而不是立即执行它们。您可以将其粘贴到命令行中以便以后进行更多控制。 也许这会让你开始。

  找到。 -name“* .zip”| perl -nE   “终日啃食;我的$ f = qq($ _); $ f =〜/(\ d +)/;   说“mv $ f”。 sprintf(“%03d”,$ 1)。 “的.zip”;'