我有一个 Perl 脚本来计算一个表达式在文件中出现的次数,在这种特殊情况下,它计算在 '<' 和 '>' 之间找到的所有内容,因为我希望它解析 .xml 文件。
脚本:
#usr/bin/perl
sub by_count {
$count{$b} <=> $count{$a};
}
open(INPUT, "<[Content_Types].xml");
open(OUTPUT, ">output");
$bucket = qw/./;
while(<INPUT>){
@words = split(/\</);
foreach $word (@words){
if($word=~/($bucket*>)/io){
#print OUTPUT "$word";
#print OUTPUT "\n\n";
$count{$1}++;}
}
}
foreach $word (sort by_count keys %count) {
print OUTPUT "<$word occurs $count{$word} times\n\n";
}
close INPUT;
close OUTPUT;
输出
<Default Extension="xlsx" ContentType="application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"/> occurs 1 times
<Default Extension="png" ContentType="image/png"/> occurs 1 times
<Override PartName="/word/theme/theme1.xml" ContentType="application/vnd.openxmlformats-officedocument.theme+xml"/> occurs 1 times
问题
我想递归地做。我有一个目录,里面有多个子目录,每个子文件夹里面都有一个 [Content_Types].xml 文件。关于如何解析在主目录中找到的具有该名称的每个文件的任何建议?
示例图:
>Directory
>Directory1
>[Content_Types].xml
>Directory2
>[Content_Types].xml
>Directory3
>[Content_Types].xml
.
.
.
>Directory100
>[Content_Types].xml