Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 15/01/2014, à 19:15

DonutMan75

[RESOLU] Utiliser une regexp dans ls

Bonjour,

comment puis-je utiliser une regexp dans ls ?

Par exemple, si je veux afficher uniquement les fichiers d'extension mp3 ou ogg :

ls "*(mp3|ogg)"

Merci d'avance smile

Donut

Dernière modification par DonutMan75 (Le 15/01/2014, à 19:34)

Hors ligne

#2 Le 15/01/2014, à 19:27

pingouinux

Re : [RESOLU] Utiliser une regexp dans ls

Bonsoir,

shopt -s extglob
ls *.@(mp3|ogg)

Hors ligne

#3 Le 15/01/2014, à 19:34

DonutMan75

Re : [RESOLU] Utiliser une regexp dans ls

Super,
merci beaucoup smile

Bonne soirée,

Donut

Hors ligne

#4 Le 16/01/2014, à 01:33

aduxas

Re : [RESOLU] Utiliser une regexp dans ls

Sans activer extglob:

ls *{mp3,ogg}

Hors ligne

#5 Le 16/01/2014, à 17:01

DonutMan75

Re : [RESOLU] Utiliser une regexp dans ls

Bonjour aduxas,
merci pour ta réponse smile

Bon, il faut que je me fasse une petite note.. Je connais les rudiments des regexp mais dans bash le comportement est différent...
De la même façon '*' signifie "une ou plusieurs occurrences du caractère précedent" alors que dans ls, ça signifie "n'importe quelle chaîne de caractère (potentiellement vide)"...

Hors ligne

#6 Le 16/01/2014, à 17:10

Postmortem

Re : [RESOLU] Utiliser une regexp dans ls

Salut,
En fait, dans bash, ce ne sont pas des regexp qui sont utilisées (enfin, on peut les utiliser aussi), mais en général, ce sont des "pattern" qui sont utilisés.


Mot' a dit : « Un Hellfest sans Slayer, c'est comme une galette-saucisse sans saucisse ! »

Hors ligne

#7 Le 17/01/2014, à 04:33

aduxas

Re : [RESOLU] Utiliser une regexp dans ls

Oui, dans regexp * veut dire "n'importe combien d'instances du caractère précédent".  Dans bash, pour une commande qui prend comme argument une liste de fichiers, * est un joker et peut représenter tout nom ou partie de nom de fichier.
Les accolades enferment une liste de noms partiels, chacun à combiner avec le reste du pattern.  La liste peut inclure un élément nul, p.e.

diff fichier{,.bak}

est équivalent à

diff fichier fichier.bak

et

ls *{mp3,ogg}

à

ls *mp3 *ogg

Ce ne sont pas des regexp.

Dernière modification par aduxas (Le 17/01/2014, à 04:34)

Hors ligne