OVH Cloud OVH Cloud

Comportement de ls.

23 réponses
Avatar
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

10 réponses

1 2 3
Avatar
dominique
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.

C'est n'importe quoi, quand je tape : « ls -R | grep mp3 | grep wc -l »

Tu as parfaitement raison, je ne vois pas du tout pourquoi j'ai mis un
second grep...
Bref... je suis tout rouge de confusion ;-)
Bonne journée,
Dominique


Avatar
dominique
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"


J'avais noté l'argument -f qui est intéressant.
Merci pour cette précision et bonne journée,
Dominique

Avatar
moi-meme
Fabien LE LEZ wrote:

Ç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...
tree est dans un package éponyme séparé.

Y a t'il un truc parce que find . -name * me sort rien quelquefois.
(ne trouve pas toujours avec des expressions régulières pour le nom des
fichiers)

Avatar
Fabien LE LEZ
On Fri, 16 Nov 2007 07:41:36 +0100, moi-meme :

Y a t'il un truc parce que find . -name * me sort rien quelquefois.


Rajoute les guillemets qui vont bien. Cf
<news:

Avatar
Thierry B.
--{ moi-meme a plopé ceci: }--

Y a t'il un truc parce que find . -name * me sort rien quelquefois.


find . -name '*'

Avec find, il faut faire gaffe à bien escaper les arguments.


--
http://www.bashfr.org/?1138

Avatar
Fabien LE LEZ
On Fri, 16 Nov 2007 10:48:55 +0100, "Thierry B." :

Avec find, il faut faire gaffe à bien escaper les arguments.


Je dirais plutôt : avec un shell Unix, il faut faire gaffe à ...

Franchement, le principe du remplacement automatique de "*" et "?" par
le shell est passablement tordu. C'est puissant, certes, mais il faut
beaucoup de temps pour s'y habituer. Surtout quand, comme moi, on a
l'habitude du shell microsoftien.

Un exemple typique : si tu as deux fichiers, f1 et f2, dans un
répertoire "r", et que tu es dans un autre répertoire, taper
copy r*
sous Windows copie f1 et f2 dans le répertoire courant.
Sous Linux,
cp r/*
est interprété comme
cp r/f1 r/f2
ce qui donne un résultat bien différent -- et m'a beaucoup fait
grincer des dents à mes débuts unixiens.

Avatar
moi-meme
Fabien LE LEZ wrote:

On Fri, 16 Nov 2007 07:41:36 +0100, moi-meme :

Y a t'il un truc parce que find . -name * me sort rien quelquefois.


Rajoute les guillemets qui vont bien. Cf
<news:


OK vu ce qui se passe donc d'où vient le problème

Je me coucherais moins bête que je me suis levé : c'est déjà quelque chose

Merci


Avatar
Fabien LE LEZ
On Fri, 16 Nov 2007 16:30:20 +0100, moi-meme :

Je me coucherais moins bête que je me suis levé : c'est déjà quelque chose


Et histoire de te permettre de te coucher encore moins bête : on écrit
"Je me coucherai". Si tu rajoutes un "s", c'est du conditionnel.
L'école primaire est bien loin manifestement...

Avatar
Hugolino
Le Fri, 16 Nov 2007 17:07:47 +0100, Fabien LE LEZ a écrit:
On Fri, 16 Nov 2007 16:30:20 +0100, moi-meme :

Je me coucherais moins bête que je me suis levé : c'est déjà quelque chose


Et histoire de te permettre de te coucher encore moins bête : on écrit
"Je me coucherai". Si tu rajoutes un "s", c'est du conditionnel.


Conditionnel qu'il avait apparament raison d'employer. La condition
(non mentionné je te l'accorde) pour qu'il se couche moins bête étant
que tu répondes à sa question.

L'école primaire est bien loin manifestement...


Et c'est heureux, ça évite les querelles de cours de récré :P

--
There is only 10 types of people: those who understand binary and those
who don't.
Hugo (né il y a 1 374 839 138 secondes)


Avatar
Fabien LE LEZ
On Sun, 18 Nov 2007 12:28:57 +0100, Hugolino :

Conditionnel qu'il avait apparament raison d'employer. La condition
(non mentionné je te l'accorde) pour qu'il se couche moins bête étant
que tu répondes à sa question.


Non, il n'y a pas de condition.
L'idée n'était pas "Si tu répondais à ma question, je me
coucherais..." mais bien "Tu as répondu à ma question ; je me
coucherai donc ...".

1 2 3