继续我之前的问题(但其他问题),
根据以下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 $_;
}
答案 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”;'