liste des fichiers commençant par "annee4" et de 7 caractères [exp reg] - Codes et scripts - Linux et OS Alternatifs
Marsh Posté le 06-04-2014 à 00:57:17
Grep utilise de vraies regexp, pas de globbing.
ls | grep '^annee4.?'
Marsh Posté le 06-04-2014 à 10:17:13
tuxerman12 a écrit : Grep utilise de vraies regexp, pas de globbing. |
Pas de différence aucun résultat c'est vraiment bizarre :s
Marsh Posté le 06-04-2014 à 10:26:19
Et quelque chose comme ça :
Code :
|
Le soucis dans ton cas c'est que ls donne c'est que tes lignes ne commencent pas par le nom du fichier mais par les attributs du fichier donc le "^" ne peut fonctionner
Marsh Posté le 06-04-2014 à 10:38:35
salut,
en bash:
Code :
|
pour éviter les collisions avec le globbing du shell, il est préférable de mettre les regex entre apostrophes/guillemets.
et évite de parser ls, c'est souvent source d'erreurs.
Marsh Posté le 06-04-2014 à 10:47:13
Salut,
Benh_31 a écrit : Pas de différence aucun résultat c'est vraiment bizarre :s |
Il faut utiliser les expressions étendues (egrep ou grep -E) :
ls | egrep '^annee4.{0,1}$' |
Marsh Posté le 06-04-2014 à 10:54:48
SnowBear a écrit : Et quelque chose comme ça :
|
Tout à fait d'accord en y repensant ! par contre le fait de mettre une étoile à la fin, ça va pas permettre de récupérer des noms de plus de 7 caractères ?
Ta formule marche en tout cas !
A quoi sert le %s dans ta commande ?
et mettre (?) ça permet de rendre facultatif le caractère ?
Marsh Posté le 06-04-2014 à 11:11:39
'%s\n' est l'indication du format à adopter par la commande printf : s pour string, le \n est le passage à la ligne.
man bash a dit:
Citation : ?(liste-motif) |
Citation : ? Correspond à n'importe quel caractère. |
nb: il faut que l'option extglob soit active.
Marsh Posté le 06-04-2014 à 11:30:20
D'accord merci pour les explications ! Tout marche nickel
Marsh Posté le 06-04-2014 à 11:49:53
Ben du coup ls annee?(4)? devrait faire l'affaire, non ?
Marsh Posté le 06-04-2014 à 11:58:55
Benh_31 veut lister les fichiers qui commencent par annee4, et suivis d'un caractère facultatif.
annee?(4)? rend le 4 facultatif, suivi d'un caractère.
Marsh Posté le 06-04-2014 à 12:09:51
Pourtant, avec un listing du genre :
$ ls -1 |
Le résultat est le bon :
$ ls annee?(4)? |
Marsh Posté le 06-04-2014 à 12:25:07
Par contre ce n'est pas bon si il y a des fichiers comme anneex
$ ls -1 annee?(4)? |
Comme quoi faut toujours pousser ses investigations jusqu'au bout
Marsh Posté le 06-04-2014 à 14:44:05
Si la nuit porte conseil, manger aussi apparemment
Cette syntaxe devrait le faire :
ls -1 annee4?([0-9]) |
Marsh Posté le 06-04-2014 à 15:46:01
Benh_31 a écrit : |
Benh_31 a écrit : |
Dans mon exemple j'ai zappé ta contrainte du nombre de caractères !
Marsh Posté le 06-04-2014 à 19:38:11
Benh_31 a écrit : Bonjour à tous ! |
Pour être conforme à ta demande :
Citation : find . -type f -regex './annee4.?' |
Marsh Posté le 07-04-2014 à 08:25:53
ReplyMarsh Posté le 07-04-2014 à 10:37:54
Benh_31 a écrit : Wahou, pas si facile que ça mon truc ^^ en tout cas merci pour votre intérêt ! |
oggy@aoi ~/tmp/test-annee % ls |
Marsh Posté le 07-04-2014 à 10:48:01
o'gure a écrit : ls | grep -E "^annee4[0-9]?$" |
En faisant comme ça je vais pas ignorer les fichiers commençant pas annee4 suivi d'une lettre ou d'un autre caractères autre qu'un chiffre ?
Marsh Posté le 07-04-2014 à 10:57:03
Si, vu que tous tes exemples avaient des chiffre j'en concluais que c'était le format
Si tu veux n'importe quel caractère
oggy@aoi ~/tmp/test-annee % ls | grep -E "^annee4.?$" |
Marsh Posté le 05-04-2014 à 22:08:07
Bonjour à tous !
alors voilà mon problème j'ai un petit exercice à faire, rien de bien méchant et pourtant !
Je dois simplement afficher la liste des fichiers commençant par "annee4" et de sept lettres maximum sous entendu que ça peut faire moins.
J'ai donc élaborer cette commande : 'ls | grep ^annee4?'
pourtant, cela ne me donne aucun résultat... j'ai bien trouvé une alternative avec cette commande : 'ls | grep ^annee4.' mais avec le point, j'omets le cas ou mon fichier s'appelle annee4...
Voyez par vous même, si quelqu'un peut m'expliquer où est mon erreur ça serait génial
Je vous remercie par avance !