-1

由于文件的数量,我有一个文件目录,我试图使用 perl 将其拆分为子目录。文件名在开头的日期格式为 YYYYMMDD 格式,我正在尝试对此进行拆分。我正在使用改编自此 StackOverflow 答案的以下代码:

#!/usr/bin/perl -w
use strict;

opendir DIR, "." or die "opendir: $!";
my @files = readdir(DIR);
closedir DIR;
foreach my $f (@files) {
    -f $f or next;
    (my $new_name = $f) =~ s!^((....)(..)(..).*)$!$2/$3/$4/$1/;
    -e $new_name and die "$new_name already exists";
    rename($f, $new_name);
}  

但是,我得到一个“替换替换未在 movefiles.pl 第 10 行终止”。当我尝试运行此代码时。据我所见,我正在正确地转义并终止替换?

4

1 回答 1

4

您正在!用作正则表达式分隔符。你有一个开始它,一个将匹配部分与替换部分分开,但最后没有一个。

于 2013-04-25T10:38:36.767 回答