我有一个目录/var/spool
,其中的目录名为
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
的目录...
每个用户目录都包含邮件,文件名具有以下格式:2、3、4、5等。
我如何列出每个目录中每个用户的电子邮件文件,如下所示:
/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.
等等。
我需要的文件,然后打开每一个单独的文件修改头和身体。这部分我已经有了,但我需要的第一部分。
我正在尝试这个:
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);
但并不符合我的需要。
6条答案
按热度按时间cczfrluj1#
您可以使用File::Find。
tkclm6bt2#
正如其他人所指出的,使用File::Find:
p5fdfcr13#
使用File::Find遍历目录树。
new9mtju4#
对于固定级别的目录,有时使用glob比使用File::Find:
nafvub8i5#
人们一直在推荐File::Find,但另一个让它变得简单的是我的File::Find::Closures,它为您提供了方便的函数:
你甚至不需要使用
File::Find::Closures
,我编写这个模块是为了让你可以提取出你想要的子例程,并将它粘贴到你自己的代码中,也许可以调整它以获得你所需要的。a0x5cqrl6#
试试这个: