Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

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

7 réponses
Avatar
stephane.gargoly
Bonjour =C3=A0 tous les utilisateurs et d=C3=A9veloppeurs de Debian :

Comme vous le savez sans doute, un r=C3=A9pertoire peut =C3=A9ventuellement=
contenir des fichiers (f - en sens classique du terme), des liens symboliq=
ues (l), des tubes nomm=C3=A9s (p), des sockets (s), des n=C5=93uds de p=C3=
=A9riph=C3=A9riques en mode caract=C3=A8re (c) ou bloc (b) voire des sous-r=
=C3=A9pertoires (d).

Nous avons d=C3=A9j=C3=A0 la commande 'ls' qui nous permet d'afficher le co=
ntenu d'un r=C3=A9pertoire (avec plus ou moins de d=C3=A9tail selon qu'on a=
djoint ou non l'option '-l').

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

De plus, de fa=C3=A7on optionnelle, cette commande pourrait nous apporter c=
ette information de mani=C3=A8re r=C3=A9cursive au cas o=C3=B9 un r=C3=A9pe=
rtoire contiendrait des sous-r=C3=A9pertoires (un peu =C3=A0 la mani=C3=A8r=
e d'un "du -s" pour l'occupation disque totale d'un r=C3=A9pertoire).

A priori, d'apr=C3=A8s mes recherches (dans les "man pages" en particulier)=
, ce type de commande ne semble pas exister (du moins, pas de mani=C3=A8re =
simple ou directe), ce que je trouve assez =C3=A9tonnant car je pense que c=
e type d'information peut =C3=AAtre int=C3=A9ressante =C3=A0 bien des =C3=
=A9gards...

Cela =C3=A9tant dit, corrigez-moi si je me trompe car il est possible que j=
e ne suis pas all=C3=A9 l=C3=A0 o=C3=B9 je devrais y pointer mon nez. ;-)

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

En attendant, j'ai d=C3=A9j=C3=A0 con=C3=A7u 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=C3=
=A9pertoire '/dir'.

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

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

Enfin, en rempla=C3=A7ant (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=
=C3=A9e que moi (par rapport =C3=A0 la commande que j'ai mise au point), qu=
'il n'h=C3=A9site pas =C3=A0 me faire savoir...

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

Cordialement et =C3=A0 bient=C3=B4t,

St=C3=A9phane.



Une messagerie gratuite, garantie =C3=A0 vie et des services en plus, =C3=
=A7a vous tente ?
Je cr=C3=A9e ma bo=C3=AEte 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

7 réponses

Avatar
steve
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/
Avatar
stephane.gargoly
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/
Avatar
Harang Jean-Marc
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/
Avatar
Bernard Isambert
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/
Avatar
steve
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/
Avatar
Harang Jean-Marc
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/
Avatar
stephane.gargoly
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/