|
|
|
|
||||||
| fr.comp.os.unix Système UNIX. |
![]() |
|
|
LinkBack | Outils de la discussion |
|
|
#1 |
|
Messages: n/a
Hébergeur: |
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 |
|
|
|
#2 |
|
Messages: n/a
Hébergeur: |
"Stan" <none@none.invalid> writes:
> 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 |
|
|
|
#3 |
|
Messages: n/a
Hébergeur: |
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 |
|
|
|
#4 |
|
Messages: n/a
Hébergeur: |
"Luc Habert" <Luc.Habert.00__arjf@normalesup.org> a écrit dans le message de news:f024of$2nqh$1@nef.ens.fr... > 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 |
|
|
|
#5 |
|
Messages: n/a
Hébergeur: |
2007-04-17, 11:33(+02), Matthieu Moy:
> "Stan" <none@none.invalid> writes: [...] >> 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 |
|
![]() |
| Outils de la discussion | |
|
|