2

私はPerlに不慣れで、言語を学ぼうとしていますが、おそらく簡単だと思うことをするのに苦労しています。

ディレクトリ内のファイルの数だけをカウントするスクリプトを機能させることができました。スクリプトを拡張して、サブディレクトリ内のすべてのファイルも再帰的にカウントするようにしたいと思います。GLOBとFile::Findのいくつかの異なるオプションを検索して見つけましたが、それらを機能させることができませんでした。

私の現在のコード:

#!/usr/bin/perl
use strict;
use warnings;

use Path::Class;

# Set variables

my $count = 0;  # Set count to start at 0
my $dir = dir('p:'); # p/

# Iterate over the content of p:pepid content db/pepid ed
while (my $file = $dir->next) {   


    next if $file->is_dir();    # See if it is a directory and skip


    print $file->stringify . "\n";   # Print out the file name and path
    $count++   # increment count by 1 for every file counted

}


print "Number of files counted " . $count . "\n";

誰かがこのコードを拡張してサブディレクトリも再帰的に検索するのを手伝ってもらえますか?

4

1 に答える 1

2

File :: Findモジュールは、再帰的な種類の操作の友です。ファイルをカウントする簡単なスクリプトは次のとおりです。

#!/usr/bin/perl
use strict;
use warnings;
use Cwd;
use File::Find;

my $dir = getcwd; # Get the current working directory

my $counter = 0;
find(\&wanted, $dir);
print "Found $counter files at and below $dir\n";

sub wanted {
    -f && $counter++; # Only count files
}
于 2013-02-19T21:05:04.753 に答える