2017-08-24 7 views
1

Quel est le moyen le plus simple d'obtenir la liste des noms complets de tous les fichiers d'un répertoire donné (y compris les fichiers dans les sous-répertoires)?Obtenir la liste des noms de tous les fichiers dans un répertoire (Perl)

Oui, je connais le module File::Find. Mais y a-t-il un moyen plus facile?

+0

Définir 'plus facile' ... –

+0

Je ne pense pas que ce soit plus facile que 'File :: Find', sauf si vous pouvez complètement éviter Perl et utiliser un outil différent, par exemple, si vous voulez juste savoir combien l'espace que prennent ces fichiers, vous pouvez utiliser 'du -hs' sous Linux. – Robert

+1

[Chemin :: Tiny-> itérateur] (https://metacpan.org/pod/Path::Tiny#iterator) –

Répondre

4

Le File::Find::Rule est un outil très utile

perl -Mstrict -MFile::Find::Rule -wE' 
    my @all = File::Find::Rule->in("."); 
    say for @all 
' 

Vous pouvez d'abord obtenir l'objet my $ffr = File::Find::Rule puis fixer des règles à ce sujet.

Le Path::Tiny->iterator est très bien aussi, pour « paresseusement » marcher un arbre

perl -Mstrict -MPath::Tiny -wE' 
    my $iter = path(".")->iterator({recurse => 1}); 
    while (my $path = $iter->()) { say $path } 
' 

où vous pouvez interroger très facilement le contenu rencontré. Le module a beaucoup d'autres utilisations et commodités pour le travail de système de fichiers, c'est presque une caractéristique "latérale".

Le Path::Iterator::Rule semble aussi bien valoir la peine, pour les deux caractéristiques et la facilité d'utilisation.