我曾经在我的桌面上采用以下格式的任意文件集:
屏幕截图 2011-11-08 在 8.10.23 AM.png
屏幕截图 2011-11-08 在 8.08.57 AM.png
在它们上运行 Perl 脚本并将它们重命名为
SS-2011-11-08 上午 8.10.23.png
SS-2011-11-08 在 8.08.57 AM.png
这停止工作并且没有重命名发生。现在我必须更改它,我希望它更改为:
ss-2011.11.08.at.8.10.23.AM.png
ss-2011.11.08.at.8.08.57.AM.png
- 将“Screen Shot”替换为“ss”
- 全部替换
-
为.
- 将所有空格替换为
.
我知道这与贪婪有关,但我没有写这个,无论我做了多少摆弄,我似乎都无法让它发挥作用。在我的生活中,我已经使用了几个小时的 perl。我想我可以用几行代码在 php 中做到这一点,但我想学习如何将它保存在 perl 中,因为能够调试总是好的。我查看了 regs 格式规则,但它们不适用。要么 Mac OS X Lion 出现问题,要么 Snow Leopard 允许不应该发生的事情发生。
谢谢你们!
这是我到目前为止所拥有的:
#!/usr/bin/perl -w
chdir( "/Users/me/Desktop" ) or die;
my @files = ();
print "after my \@files array\n";
print @files;
while ( <*> ) {
push @files, $_ if m!^Screen Shot (.*) at (.*)\.png!;
}
foreach my $f ( @files ) {
my $new = $f;
$new =~ s!^SS (.*) at (.*)\.png!ss-$1\_$2.png!;
print "$f -> $new\n";
rename ( $f, $new ) or die;
}