首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >未能在我的目录中找到扩展名为.tar.gz的regex文件

未能在我的目录中找到扩展名为.tar.gz的regex文件
EN

Stack Overflow用户
提问于 2013-08-13 06:40:28
回答 2查看 225关注 0票数 0

当我试图运行以下代码时,我遇到了一些错误,

我的要求是找到日期格式为Ex的文件:我在一个目录中有名字的文件。

代码语言:javascript
复制
    01-02-2013.tar.gz
    02-02-2013.tar.gz

.....

所以现在我想找一个01-02-2013的文件

下面是代码片段

代码语言:javascript
复制
my ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time-6*24*60*60);
$year += 1900;
$mon += 1;
$mday = '0'.$mday if ($mday<10);
$mon = '0'.$mon if ($mon<10);
my $date_folder =~ /"$mday-$mon-$year"/;
        if (-e $date_folder){
                 unlink $date_folder or die ("Cannot Delete $date_folder : $!");
                        }

在这里,我基本上是要在6天前(例如: 01-02-2013.tar.gz )找到当前日期的文件,SomeWhere I my $date_folder =~ /“$mday-$mon-$/”/;出错了,

有什么建议吗?

EN

回答 2

Stack Overflow用户

发布于 2013-08-13 06:45:23

只需删除引号:

代码语言:javascript
复制
my $date_folder =~ /$mday-$mon-$year/;

它们只是正则表达式中的字面字符。

哦,对不起,我忽略了代码根本就没有意义!

因此,一些基本知识:如果您有类似于$date_folder =~ /$mday-$mon-$year/;的内容,则正则表达式与$date_folder的内容相匹配。如果没有设置,您将得到“在模式匹配(m/)中使用未初始化值$date_folder”。

$date_folder =~ /$mday-$mon-$year/;返回true或false。

有关更多细节,请参见:

  • perlrequick
  • 皮雷图

在您的情况下,您需要遍历文件夹中的文件和循环中的文件,您需要用regex检查当前文件名,如果匹配,那么对文件做任何您想做的事情。

有关更多细节,请参见:

票数 1
EN

Stack Overflow用户

发布于 2013-08-13 09:13:31

最后这东西对我起作用了

代码语言:javascript
复制
my ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time-6*24*60*60);
$year += 1900;
$mon += 1;
$mday = '0'.$mday if ($mday<10);
$mon = '0'.$mon if ($mon<10);

opendir(DIR,"/home/DB_BKPS");
        my @files = grep (/$mday-$mon-$year/,readdir(DIR));
        print "@files\n";
                foreach my $file (@files){
                chomp($file);
                unlink ($files[0]);
                        }
closedir(DIR);

谢谢大家抽出时间

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18202285

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档