OVH Cloud OVH Cloud

lister le contenu d'un repertoire et n'afficher que les sous-repertoire

3 réponses
Avatar
Khorne
Bonjour,

je voudrais en listant le contenu d'un repertoire, n'afficher que le
sous-repertoire et pas les fichiers.

Voici mon code

opendir(DIR, $directory) || die "can't opendir $directory: $!";
while ($file = readdir(DIR)) {
print($file."\n");
};
closedir DIR;


Merci

3 réponses

Avatar
Jérôme Labidurie
Hello,

Je debute en perl, mais je dirais :
opendir(DIR, $directory) || die "can't opendir $directory: $!";
while ($file = readdir(DIR)) {
print($file."n") if (-d $directory."/".$file);

};
closedir DIR;


JJL

--
Jérôme Labidurie

Avatar
root
On Tue, 20 Jan 2004 12:30:47 +0100, Khorne wrote:

Bonjour,

je voudrais en listant le contenu d'un repertoire, n'afficher que le
sous-repertoire et pas les fichiers.

Voici mon code

opendir(DIR, $directory) || die "can't opendir $directory: $!";


my @subdirs = grep { -d } readdir(DIR);
print join("n", @subdirs), "n";

while ($file = readdir(DIR)) {
print($file."n");
};
closedir DIR;



On peut aussi utiliser un `grep { !m/^.{1,2}$/ }' pour supprimer les
repertoires `.' et `..' du listing :

my @subdirs = grep { !m/^.{1,2}$/ } grep { -d } readdir(DIR);

Avatar
Ronan Le Hy
root writes:
On Tue, 20 Jan 2004 12:30:47 +0100, Khorne wrote:
je voudrais en listant le contenu d'un repertoire, n'afficher que le
sous-repertoire et pas les fichiers.

opendir(DIR, $directory) || die "can't opendir $directory: $!";


my @subdirs = grep { -d } readdir(DIR);
print join("n", @subdirs), "n";


Plutot:
my @subdirs = grep { -d "$directory/$_"} readdir(DIR);
(ou alors faire un chdir avant)

while ($file = readdir(DIR)) {



Cette boucle va s'arreter si on tombe sur un repertoire dont le nom
est "0", par exemple.

while (defined ($file = readdir(DIR)))
{
...

[...]


HTH

--
Ronan