Comportement de ls.

Le
dominique
Bonjour,
Je voudrai compter des fichiers mp3 qui sont dans une arborescence de
répertoires :

[normal@localhost voice]$ ls -l
total 40
drwxr-xr-x 2 normal normal 4096 nov 10 08:12 16279_bien_commun
drwxr-xr-x 2 normal normal 4096 nov 15 10:14 2000_ans-histoire
drwxr-xr-x 2 normal normal 4096 nov 15 10:12 aspects_pensee_contemporaine
drwxr-xr-x 2 normal normal 4096 nov 15 10:13 enjeux_internationaux
drwxr-xr-x 2 normal normal 4096 nov 1 13:48 islam
drwxr-xr-x 2 normal normal 4096 nov 15 10:14 jacquard
drwxr-xr-x 2 normal normal 4096 nov 15 10:12 lundis_histoire
drwxr-xr-x 2 normal normal 4096 nov 10 08:09 science_conscience
drwxr-xr-x 2 normal normal 4096 nov 10 08:13 vendredis_de_la_philosophie
drwxr-xr-x 2 normal normal 4096 nov 15 10:12 vivants_et_les_dieux

À la racine de l'arborescence, je tape :

[normal@localhost voice]$ ls -R *mp* | wc -l
2

En fouillant un peu, je constate que le motif *mp* n'est pas recherché
dans mp3 mais dans le nom d'un seul répertoire (conteMPoraine) par ls :

[normal@localhost voice]$ ls -R *mp*
aspects_pensee_contemporaine:
10344-11.11.2007-ITEMA_20096350-0.mp3

wc -l fait son boulot en comptant 2 lignes qui sortent de ls.

D'où, ma question : quels argument et motif passer à ls avec wc -l pour
ne compter que les fichiers qui ont le motif souhaité, en l'occurrence mp3.
Je vous remercie,
Dominique
Questions / Réponses high-tech
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses Page 1 / 3
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Steph
Le #1907153
Bonjour,
Je voudrai compter des fichiers mp3 qui sont dans une arborescence de
répertoires :

[ voice]$ ls -l
total 40
drwxr-xr-x 2 normal normal 4096 nov 10 08:12 16279_bien_commun
drwxr-xr-x 2 normal normal 4096 nov 15 10:14 2000_ans-histoire
drwxr-xr-x 2 normal normal 4096 nov 15 10:12 aspects_pensee_contemporaine
drwxr-xr-x 2 normal normal 4096 nov 15 10:13 enjeux_internationaux
drwxr-xr-x 2 normal normal 4096 nov 1 13:48 islam
drwxr-xr-x 2 normal normal 4096 nov 15 10:14 jacquard
drwxr-xr-x 2 normal normal 4096 nov 15 10:12 lundis_histoire
drwxr-xr-x 2 normal normal 4096 nov 10 08:09 science_conscience
drwxr-xr-x 2 normal normal 4096 nov 10 08:13 vendredis_de_la_philosophie
drwxr-xr-x 2 normal normal 4096 nov 15 10:12 vivants_et_les_dieux

À la racine de l'arborescence, je tape :

[ voice]$ ls -R *mp* | wc -l
2

En fouillant un peu, je constate que le motif *mp* n'est pas recherché
dans mp3 mais dans le nom d'un seul répertoire (conteMPoraine) par ls :

[ voice]$ ls -R *mp*
aspects_pensee_contemporaine:
10344-11.11.2007-ITEMA_20096350-0.mp3

wc -l fait son boulot en comptant 2 lignes qui sortent de ls.

D'où, ma question : quels argument et motif passer à ls avec wc -l pour
ne compter que les fichiers qui ont le motif souhaité, en l'occurrence mp3.
Je vous remercie,
Dominique



essaye :

find -name "*.mp3" | wc -l

ls -R *.mp3 | wc -l

Fabien LE LEZ
Le #1907152
On Thu, 15 Nov 2007 10:47:32 +0100, dominique
En fouillant un peu, je constate que le motif *mp* n'est pas recherché
dans mp3 mais dans le nom d'un seul répertoire (conteMPoraine) par ls :


Ben oui, si tu tapes

une_commande_quelconque *mp*

le shell convertit le "*mp*" en la liste des fichiers du répertoire
courant.

Ici, le seul fichier correspondant est "aspects_pensee_contemporaine".
Par conséquent, le shell traduit ta commande en :

une_commande_quelconque aspects_pensee_contemporaine

D'où, ma question : quels argument et motif passer à ls avec wc -l pour
ne compter que les fichiers qui ont le motif souhaité, en l'occurrence mp3.


La commande ls est bien moins utile qu'il n'y paraît. Dans pas mal de
cas, il faut la remplacer par "find".

En l'occurence, si tu cherches le nombre de fichiers (fichiers réels
uniquement) dont le nom contient "*mp*", tu écriras :

find -name "*mp*" -type f | wc -l

Fabien LE LEZ
Le #1907151
On Thu, 15 Nov 2007 11:43:27 +0100, Steph
ls -R *.mp3 | wc -l


Ça ne fonctionnera pas mieux. Ou alors, il faut rajouter des
guillemets quelconques quelque part.

Steph
Le #1907150
On Thu, 15 Nov 2007 11:43:27 +0100, Steph
ls -R *.mp3 | wc -l


Ça ne fonctionnera pas mieux. Ou alors, il faut rajouter des
guillemets quelconques quelque part.


Oui oui, tu as raison. A la rigueur ls -R | grep "mp3" mais pas du tout
efficace par rapport au find.


dominique
Le #1907149
find -name "*.mp3" | wc -l


[ voice]$ find -name "*mp3" | wc -l
29
[ voice]$ find -name "*mp*" -type f | wc -l
29

Ça marche ! Merci à vous deux.
Bon après-midi,
Dominique
PS : il faudra quand même que je m'intéresse à find un jour ou l'autre ;-)

dominique
Le #1907148
Oui oui, tu as raison. A la rigueur ls -R | grep "mp3" mais pas du
tout efficace par rapport au find.


Mouais... pas très probant :

[ radio_france]$ ls -R | grep mp3 | grep wc -l
[ radio_france]$ ls -R | grep "mp3" | grep wc -l
[ radio_france]$

find avec name paraît plus efficace.
Bon après-midi,
Dominique

Thierry B.
Le #1907147
--{ dominique a plopé ceci: }--

find -name "*.mp3" | wc -l


[ voice]$ find -name "*mp3" | wc -l
29
[ voice]$ find -name "*mp*" -type f | wc -l
29

Ça marche ! Merci à vous deux.


Modulo des répertoires répondant aussi au motif '*.mp3' que
l'on peut filtrer en demandant à find de n'afficher que les
vrais fichiers avec l'option "-type f".


--
1) Les FAQ sur le fonctionnement de usenet sont en charte sur fbq
C'est écrit où ? Il y a une FAQ f.b.questions mais elle est postée dans

f.u.reponses
--{ Faque qui peut }--


moi-meme
Le #1907145
dominique wrote:

D'où, ma question : quels argument et motif passer à ls avec wc -l pour
ne compter que les fichiers qui ont le motif souhaité, en l'occurrence
mp3. Je vous remercie,
pour ma part j'aurais essayé

tree -f <point du haut> | grep <motif> | wc -l

C'est beau, bien, correct, moyen, supportable, passable, abominable,
horrible, honteux ?

(rayer la mention inutile)

Fabien LE LEZ
Le #1907139
On Thu, 15 Nov 2007 13:42:57 +0100, dominique
[ radio_france]$ ls -R | grep mp3 | grep wc -l


Sans le deuxième grep, ça devrait fonctionner beaucoup mieux.
Là, tu recherches la chaîne "wc" dans le résultat, et forcément, ça ne
donne pas grand-chose.

Fabien LE LEZ
Le #1907138
On Thu, 15 Nov 2007 17:22:20 +0100, moi-meme
pour ma part j'aurais essayé
tree -f <point du haut> | grep <motif> | wc -l


Ça ne fonctionne pas sur ma machine. J'imagine qu'il faut installer
quelque chose, mais bon, comme find fonctionne, je ne vais pas
chercher plus loin...

En fait, find, comme rsync, fait partie de ces utilitaires qu'il faut
bien connaître, car ils rendent énormément de services.

De même que rsync doit être le premier réflexe dès qu'on veut copier
des fichiers (même si cp sert bien pour des trucs simples), le premier
réflexe dès qu'on veut connaître la liste des fichiers qui ont telle
ou telle propriété, est "find".

Publicité
Poster une réponse
Anonyme