Rechercher : dans
Par :

Cherche une commande unix

Dernière réponse le 5 jun 2007 à 16:51:13 Littlenico, le 26 oct 2006 à 18:18:35 
 Signaler ce message aux modérateurs

Bonjour. comment puis-je afficher à l'aide de la commande grep et ls (et donc un pipe) tous les fichier contenant exactement 2 lettres "m" et n'importes quel nombre de caractères ?
merci

Configuration: ubuntu 6.06

Meilleures réponses pour « cherche une commande unix » dans :
[MacOS X] Supprimer les fichiers récalcitrants VoirIl vous arrive peut-être parfois de vouloir vider la corbeille et que les fichiers ou dossiers que vous voulez supprimer y restent, refusent de disparaître. Pour résoudre ce problème, utilisez une commande UNIX dans le Terminal. Note : ATTENTION...
Exécuter un script shell VoirExécution d'un script Pour pouvoir exécuter un script ou un programme en ligne de commande il y a plusieurs possibilités : 1. Le chemin absolu 2. Le chemin relatif 3. Modifier la variable PATH Note: Le Sha...
[PHP] Comment afficher l'adresse IP d'un visiteur ? VoirPour afficher l'adresse IP d'un visiteur sur votre site, insérez ce code dans la zone où vous voulez qu'elle s'affiche.
Télécharger HTML Tidy VoirHTML Tidy est un utilitaire permettant de vérifier et d'optimiser tout code HTML. La version originale de cet utilitaire s'utilise en mode de commande uniquement. La présente version, appelée "GUI Tidy", possède une interface graphique. Notez...
Introduction aux systèmes UNIX VoirLe système UNIX Le système Unix est un système d'exploitation multi-utilisateurs, multi-tâches, ce qui signifie qu'il permet à un ordinateur mono ou multi-processeurs de faire exécuter simultanément plusieurs programmes par un ou plusieurs...

1

lami20j, le 26 oct 2006 à 19:02:32

Salut,

je ne suis pas sur si j'ai bien saisie. C'est ça que tu veux?

# ls -l
total 0
-rw-r--r--  1 root root 0 2006-10-26 19:06 aaammbbb
-rw-r--r--  1 root root 0 2006-10-26 18:48 aaammsdkjm
-rw-r--r--  1 root root 0 2006-10-26 18:57 bbmem
-rw-r--r--  1 root root 0 2006-10-26 18:47 madfsdm
-rw-r--r--  1 root root 0 2006-10-26 18:47 mamiemando
-rw-r--r--  1 root root 0 2006-10-26 18:56 mamie.txt
-rw-r--r--  1 root root 0 2006-10-26 18:48 mm
-rw-r--r--  1 root root 0 2006-10-26 18:47 mmdjfk
Les fichiers dont le nom contient seulement 2 m quelque soit leur position
# ls -l * | grep -x '[^m]*m[^m]*m[^m]*'
-rw-r--r--  1 root root   0 2006-10-26 19:06 aaammbbb
-rw-r--r--  1 root root   0 2006-10-26 18:57 bbmem
-rw-r--r--  1 root root   0 2006-10-26 18:47 madfsdm
-rw-r--r--  1 root root   0 2006-10-26 18:56 mamie.txt
-rw-r--r--  1 root root   0 2006-10-26 18:48 mm
-rw-r--r--  1 root root   0 2006-10-26 18:47 mmdjfk
lami20j

Répondre à lami20j

4

 poumiZ, le 5 jun 2007 à 16:51:13

Find . -name "*m*m*"

Répondre à poumiZ

2

Littlenico, le 26 oct 2006 à 19:21:06

Heu oui c'est parfait. il me manquait juste un " non m". merci

Répondre à Littlenico

3

lami20j, le 26 oct 2006 à 20:59:14

Re,

il me manquait juste un " non m".

Souvent on n'aboutit pas à nos recherches avec les regex puisque on raisonne mal la regex et pas parce que on ne connaît pas le métacaractères (qui ne sont pas nombreux).

Ta façon de raisonner la regex est un peu fausse, si je n'abuse pas.

non m pour toi correspond à [^m]
suivant ton raisonnement [m] correspond à m

En fait [m] c'est une classe de caractère qui fait correspondre au caractère m, tandis que [^m] c'est une classe de caractère complementée qui fait correspondre à n'importe quel caractère qui n'est pas m (ce qui n'est pas la même chose avec non m qui veut dire que ça peut être un m ou pas)

Le but d'une regex c'est de faire correspondre et pas de ne pas faire correspondre (pour ça on utilise les opérateurs d'un langage de programmation)

En bref [^m] veut dire faire correspondre à tout caractère qui n'est pas m et pas ne pas faire correspondre au caractère m.

Cette subtilité on peut l'expliquer avec un petit exemple

echo "Salut" | egrep 't[^m]
Normalement si on pense à ne pas faire correspondre au caractère m la regex doit réussir. Mais ce n'est pas le cas.
Pourquoi?
Puisque [^m] veut plutôt dire de faire correspondre à quelque chose et dans notre cas t c'est le dernière caractère.

Bonne continuation.

lami20j

Répondre à lami20j
Collection CommentÇaMarche.net