如何使用Perl在具有特定名称模式的目录下列出文件? [英] How can I list files under a directory with a specific name pattern using Perl?

查看:243
本文介绍了如何使用Perl在具有特定名称模式的目录下列出文件?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个目录 / var / spool ,其中名为

I have a directory /var/spool and inside that, directories named


a  b  c  d  e  f  g  h i  j  k  l  m  n  o  p q  r  s  t  u  v  x  y z

在每个信件目录内,一个名为 user 里面,许多目录叫做 auser1 auser2 auser3 auser4 auser5 ...

And inside each "letter directory", a directory called "user" and inside this, many directories called auser1 auser2 auser3 auser4 auser5 ...

每个用户目录包含邮件,文件名称具有以下格式:2. 3. 4. 5. etc。

Every user directory contains mail messages and the file names have the following format: 2. 3. 4. 5. etc.

如何在每个目录中列出每个用户的电子邮件文件以下方式:

How can I list the email files for every user in every directory in the following way:


    /var/spool/a/user/auser1/11.
    /var/spool/a/user/auser1/9.
    /var/spool/a/user/auser1/8.
    /var/spool/a/user/auser1/10.
    /var/spool/a/user/auser1/2.
    /var/spool/a/user/auser1/4.
    /var/spool/a/user/auser1/12.
    /var/spool/b/user/buser1/12.
    /var/spool/b/user/buser1/134.
    /var/spool/b/user/buser1/144.

等。

我需要这些文件,然后打开每个文件修改标题和正文。这部分我已经有,但是我需要第一部分。

I need that files and then open every single file for modify the header and body. This part I already have, but I need the first part.

我正在尝试这个:

dir = "/var/spool";

opendir ( DIR, $dir ) || die "No pude abrir el directorio $dirname\n";
while( ($filename = readdir(DIR))){
    @directorios1 = `ls -l "$dir/$filename"`;
    print("@directorios1\n");
}
closedir(DIR);

但不需要我的方式。

推荐答案

正如其他人所说,使用文件: :查找

As others have noted, use File::Find:

#!/usr/bin/perl

use strict;
use warnings;

use File::Find;

find(\&find_emails => '/var/spool');

sub find_emails {
    return unless /\A[0-9]+[.]\z/;
    return unless -f $File::Find::name;

    process_an_email($File::Find::name);
    return;
}

sub process_an_email {
    my ($file) = @_;
    print "Processing '$file'\n";
}

这篇关于如何使用Perl在具有特定名称模式的目录下列出文件?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆