nombre de fichiers dans un répétoire

Le
Stan
Bonjour,

quelle est la manière canonnique
de connaître le nombre de fichiers
dans un répertoire de façon récursive ( avec les sous rep) ?

Merci.

--
-Stan
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Matthieu Moy
Le #735767
"Stan"
Bonjour,

quelle est la manière canonnique
de connaître le nombre de fichiers
dans un répertoire de façon récursive ( avec les sous rep) ?


Canonique, je ne sais pas, mais

$ find . | wc -l

te donnes une bonne approximation (mais si un mon de fichier contient
un retour à la ligne, tu es cuit). Cette version compte les
répertoires, si tu ne veux que les fichiers :

$ find . -type f | wc -l

--
Matthieu

Luc.Habert.00__arjf
Le #735766
Matthieu Moy :

$ find . | wc -l

te donnes une bonne approximation (mais si un mon de fichier contient
un retour à la ligne, tu es cuit).


{ find . -exec sh -c ploum 'echo "$#" +' '{}' '+'; echo 0; } | bc

Stan
Le #735525
"Luc Habert" news:f024of$2nqh$
Matthieu Moy :

$ find . | wc -l

te donnes une bonne approximation (mais si un mon de fichier contient
un retour à la ligne, tu es cuit).


{ find . -exec sh -c ploum 'echo "$#" +' '{}' '+'; echo 0; } | bc


J'utilise : ls -R | awk ' {i++} END{print i}' , mais le pb
c'est lorsque ls n'a pas les droits de lecture, j'obtiens des
messages inutiles.

--
-Stan


Stephane Chazelas
Le #735524
2007-04-17, 11:33(+02), Matthieu Moy:
"Stan" [...]

quelle est la manière canonnique
de connaître le nombre de fichiers
dans un répertoire de façon récursive ( avec les sous rep) ?


Canonique, je ne sais pas, mais

$ find . | wc -l


Ca ne compte qu'un seul "." et aucun ".." cela dit.

Tu peux faire:

find .//. ! -name . -print | grep -c //

Pour ne compter aucun "." ni ".." et la ruse du // evite les
problemes avec les noms de fichier qui contiennent des sauts de
ligne.

Avec zsh:

files=(**/*(DN))
print $#files

(ne compte ni "." ni ".." non plus).

Si on n'est pas interessé par la liste des fichiers, on peut
toujour faire:

n=0
**/*(DNe:'((n++,0))':)
print $n

qui sera beaucoup plus rapide.

--
Stéphane


Publicité
Poster une réponse
Anonyme