[HS] Un "ls" en résumé

Le
stephane.gargoly
Bonjour à tous les utilisateurs et développeurs de Debian :

Comme vous le savez sans doute, un répertoire peut éventuellement=
contenir des fichiers (f - en sens classique du terme), des liens symboliq=
ues (l), des tubes nommés (p), des sockets (s), des nœuds de pÃ=
©riphériques en mode caractère (c) ou bloc (b) voire des sous-r=
épertoires (d).

Nous avons déjà la commande 'ls' qui nous permet d'afficher le co=
ntenu d'un répertoire (avec plus ou moins de détail selon qu'on a=
djoint ou non l'option '-l').

Seulement, cette commande nous fait la liste de ce tout que contient un r=
épertoire. Or je recherche une commande qui me permet seulement de m'i=
ndiquer le nombre de fichiers, des liens symboliques, de sous-répertoi=
res, etc. que l'on peut trouver dans un répertoire.

De plus, de façon optionnelle, cette commande pourrait nous apporter c=
ette information de manière récursive au cas où un répe=
rtoire contiendrait des sous-répertoires (un peu à la manièr=
e d'un "du -s" pour l'occupation disque totale d'un répertoire).

A priori, d'après mes recherches (dans les "man pages" en particulier)=
, ce type de commande ne semble pas exister (du moins, pas de manière =
simple ou directe), ce que je trouve assez étonnant car je pense que c=
e type d'information peut être intéressante à bien des Ã=
©gards

Cela étant dit, corrigez-moi si je me trompe car il est possible que j=
e ne suis pas allé là où je devrais y pointer mon nez. ;-)

Sinon, je crains que je devrais passer par un "script bash" (c'est-à-d=
ire un fichier dont le contenu commence par "#!/bin/bash" et qui liste tout=
e une série de commande à exécuter).

En attendant, j'ai déjà conçu la commande suivante :
"find /dir -type f -prune | grep -c [[:print:]] | sed 's$ f'
qui permet de nous informer le nombre de fichiers que peut contenir le rÃ=
©pertoire '/dir'.

En supprimant l'option -prune de find (et, donc, en incluant ses évent=
uels sous-répertoires), on aura le nombre total de fichiers.

Bien sûr, si /dir ne contient aucun fichier, la commande nous donnera =
"0 f".

Enfin, en remplaçant (au niveau de find et de sed) f par l (ou s) par =
exemple, on aura le nombre de liens symboliques (ou de sockets).

Cependant, si quelqu'un (de notre liste de discussion) a une meilleure id=
ée que moi (par rapport à la commande que j'ai mise au point), qu=
'il n'hésite pas à me faire savoir

En attendant, je vais continuer la conception de mon script bash et je vous=
donnerai des mes nouvelles prochainement.

Cordialement et à bientôt,

Stéphane.



Une messagerie gratuite, garantie à vie et des services en plus, Ã=
§a vous tente ?
Je crée ma boîte mail www.laposte.net

--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.org/fr/FrenchLists

Pour vous DESABONNER, envoyez un message avec comme objet "unsubscribe"
vers debian-user-french-REQUEST@lists.debian.org
En cas de soucis, contactez EN ANGLAIS listmaster@lists.debian.org
Archive: http://lists.debian.org/2033395854.245767.1378109871013.JavaMail.www@wwinf8311
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
steve
Le #25628342
Salut,

Un truc du genre

ls -l | grep ^d | wc -l

te donne le nombre de répertoires dans le répertoire courant. Ce n'est
pas ce que tu recherche ? Ensuite à toi de modifier le grep selon tes
besoins.

Juste une piste hein..


--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.org/fr/FrenchLists

Pour vous DESABONNER, envoyez un message avec comme objet "unsubscribe"
vers
En cas de soucis, contactez EN ANGLAIS
Archive: http://lists.debian.org/
stephane.gargoly
Le #25628672
Bonjour à tous les utilisateurs et développeurs de Debian :

Dans son message du 02/09/13 à 10:40, steve a écrit :
Un truc du genre

ls -l | grep ^d | wc -l

te donne le nombre de répertoires dans le répertoire courant. C e n'est
pas ce que tu recherche ? Ensuite à toi de modifier le grep sel on tes
besoins.



Bravo, pour avoir le nombre de fichier dans un répertoire (surtout si on fait de manière récursive), ta solution semble beaucoup plus r apide.

La preuve (par l'intermédiaire de la commande 'time') :

a) avec "find /usr -type f -prune | grep -c [[:print:]] | sed 's$ f", on trouve 258057 fichiers en 170 s en moyenne.

b) avec "ls -Ral /usr | grep ^- | wc -l | sed 's$ f", on a le même résultat mais en moins de 5 s soit 30 fois moins longtemps... ;-)

J'ai fait le même test pour avoir le nombre de sous-répertoires ( ou de liens symboliques) dans /usr et la solution avec ls semble plus rapid e (quoique l'écart soit moins grand, seulement 5 et 3 fois moins de fa çon respective) que la solution avec find.

Seul soucis et il concerne le nombre de sous-répertoires (de /usr) : j 'ai 18741 avec find mais 56222 avec ls (soit 3 fois plus). :-(

Cordialement et à bientôt,

Stéphane.



Une messagerie gratuite, garantie à vie et des services en plus, à §a vous tente ?
Je crée ma boîte mail www.laposte.net

--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.org/fr/FrenchLists

Pour vous DESABONNER, envoyez un message avec comme objet "unsubscribe"
vers
En cas de soucis, contactez EN ANGLAIS
Archive: http://lists.debian.org/
Harang Jean-Marc
Le #25628822
Le 02/09/2013 12:46, a écrit :
Seul soucis et il concerne le nombre de sous-répertoires (de /usr) :
j'ai 18741 avec find mais 56222 avec ls (soit 3 fois plus). :-(



Bonjour

Cette différence ne serait-elle pas du aux liens symboliques que ls
prendrait en compte, à la différence de find ?

--
jean-marc

--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.org/fr/FrenchLists

Pour vous DESABONNER, envoyez un message avec comme objet "unsubscribe"
vers
En cas de soucis, contactez EN ANGLAIS
Archive: http://lists.debian.org/
Bernard Isambert
Le #25628892
Le 02/09/2013 12:46, a écrit :
Bonjour à tous les utilisateurs et développeurs de Debian :

Seul soucis et il concerne le nombre de sous-répertoires (de /usr) : j'ai 18741 avec find mais 56222 avec ls (soit 3 fois plus). :-(



Parce que ls te donne "." et ".." avec chaque répertoire...

--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.org/fr/FrenchLists

Pour vous DESABONNER, envoyez un message avec comme objet "unsubscribe"
vers
En cas de soucis, contactez EN ANGLAIS
Archive: http://lists.debian.org/
steve
Le #25628882
Le 02-09-2013, à 14:44:59 +0200, Bernard Isambert a écrit :

Le 02/09/2013 12:46, a écrit :
>Bonjour à tous les utilisateurs et développeurs de Debian :
>
>Seul soucis et il concerne le nombre de sous-répertoires (de /usr) : j'ai 18741 avec find mais 56222 avec ls (soit 3 fois plus). :-(
>
Parce que ls te donne "." et ".." avec chaque répertoire...



Pour éviter cela, il ne faut pas mettre l'option 'a' dans le ls.

--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.org/fr/FrenchLists

Pour vous DESABONNER, envoyez un message avec comme objet "unsubscribe"
vers
En cas de soucis, contactez EN ANGLAIS
Archive: http://lists.debian.org/
Harang Jean-Marc
Le #25628942
Le 02/09/2013 14:44, Bernard Isambert a écrit :
Le 02/09/2013 12:46, a écrit :
Bonjour à tous les utilisateurs et développeurs de Debian :

Seul soucis et il concerne le nombre de sous-répertoires (de /usr) :
j'ai 18741 avec find mais 56222 avec ls (soit 3 fois plus). :-(



Parce que ls te donne "." et ".." avec chaque répertoire...



Bien vu !

--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.org/fr/FrenchLists

Pour vous DESABONNER, envoyez un message avec comme objet "unsubscribe"
vers
En cas de soucis, contactez EN ANGLAIS
Archive: http://lists.debian.org/
stephane.gargoly
Le #25633502
Bonjour à tous les utilisateurs et développeurs de Debian :

Dans son message du 02/09/13 à 14:54, steve a écrit :
Le 02-09-2013, à 14:44:59 +0200, Bernard Isambert a écrit :

> Le 02/09/2013 12:46, a écrit :
> >Bonjour à tous les utilisateurs et développeurs de Debian :
> >
> >Seul soucis et il concerne le nombre de sous-répertoires (de /usr ) : j'ai 18741
> >avec find mais 56222 avec ls (soit 3 fois plus). :-(
> >
> Parce que ls te donne "." et ".." avec chaque répertoire...

Pour éviter cela, il ne faut pas mettre l'option 'a' dans le ls.



Sauf que la commande ls sans l'option "-a" nous éviterait bien les r épertoires . et .. (ce qui est bien) mais également les répe rtoires dont le nom commence par "." (autrement dit les répertoires ca chés) et ça, cela est moins bon.

Une solution serait d'ajouter l'option "-A" à la commande "ls -a".

Cependant, j'ai remarqué un inconvénient avec ls (par rapport à   find) :
- avec la commande "find / -mount -type f", on aura la liste de fichiers co ntenus dans le répertoire / et ses sous-répertoires qui font part ie de la même partition ou système de fichier que / (autrement di t l'option -mount exclut les sous-répertoires qui sont des points de m ontage),
- tandis qu'avec la commande ls et à ma connaissance, il n'est pas pos sible d'avoir le même résultat.

Donc je vais devoir rester avec find (qui offre plus de possibilités), ce qui est dommage car ls est plus rapide. :-(

Cordialement et à bientôt,

Stéphane.



Une messagerie gratuite, garantie à vie et des services en plus, à §a vous tente ?
Je crée ma boîte mail www.laposte.net

--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.org/fr/FrenchLists

Pour vous DESABONNER, envoyez un message avec comme objet "unsubscribe"
vers
En cas de soucis, contactez EN ANGLAIS
Archive: http://lists.debian.org/
Publicité
Poster une réponse
Anonyme