Forum |  HardWare.fr | News | Articles | PC | Prix | S'identifier | S'inscrire | Aide | Shop Recherche
1706 connectés 

  FORUM HardWare.fr
  Linux et OS Alternatifs
  Codes et scripts

  [exp reg]liste des fichiers commençant par "annee4" et de 7 caractères

 



 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[exp reg]liste des fichiers commençant par "annee4" et de 7 caractères

n°1355673
Benh_31
Posté le 05-04-2014 à 22:08:07  profilanswer
 

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 :)
 
http://img11.hostingpics.net/pics/941700Capture.png
 
Je vous remercie par avance !

mood
Publicité
Posté le 05-04-2014 à 22:08:07  profilanswer
 

n°1355675
tuxerman12
Posté le 06-04-2014 à 00:57:17  profilanswer
 

Grep utilise de vraies regexp, pas de globbing.
ls | grep '^annee4.?'

Message cité 1 fois
Message édité par tuxerman12 le 06-04-2014 à 01:02:41
n°1355688
Benh_31
Posté le 06-04-2014 à 10:17:13  profilanswer
 

tuxerman12 a écrit :

Grep utilise de vraies regexp, pas de globbing.
ls | grep '^annee4.?'


 
Pas de différence :( aucun résultat c'est vraiment bizarre :s

n°1355689
SnowBear
Ronchon :)
Posté le 06-04-2014 à 10:26:19  profilanswer
 

Et quelque chose comme ça :

Code :
  1. ls -l |cut -d " " -f 10|grep '^annee4.*'


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 ;)


---------------
Mes ventes
n°1355690
Profil sup​primé
Posté le 06-04-2014 à 10:38:35  answer
 

salut,
 
en bash:

Code :
  1. $ ls -1 test/
  2. annee1
  3. Annee2
  4. annee4
  5. annee41
  6. annee45
  7. annee4510
  8. annee4_saucisse
  9. banane
  10. $ printf '%s\n' test/annee4?(?)
  11. test/annee4
  12. test/annee41
  13. test/annee45


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. :(

n°1355693
zipe31
Posté le 06-04-2014 à 10:47:13  profilanswer
 

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}$'


 ;)  

n°1355694
Benh_31
Posté le 06-04-2014 à 10:54:48  profilanswer
 

SnowBear a écrit :

Et quelque chose comme ça :

Code :
  1. ls -l |cut -d " " -f 10|grep '^annee4.*'


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 ;)


 
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 ?

n°1355697
Profil sup​primé
Posté le 06-04-2014 à 11:11:39  answer
 

'%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)
                     Correspond à zéro ou une occurrence des motifs indiqués.


Citation :

?      Correspond à n'importe quel caractère.

nb: il faut que l'option extglob soit active.

n°1355701
Benh_31
Posté le 06-04-2014 à 11:30:20  profilanswer
 

D'accord merci pour les explications ! Tout marche nickel :)

n°1355704
zipe31
Posté le 06-04-2014 à 11:49:53  profilanswer
 


Ben du coup ls annee?(4)? devrait faire l'affaire, non ?


---------------
$ man woman
mood
Publicité
Posté le 06-04-2014 à 11:49:53  profilanswer
 

n°1355705
Profil sup​primé
Posté le 06-04-2014 à 11:58:55  answer
 

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.
:(

Message cité 1 fois
Message édité par Profil supprimé le 06-04-2014 à 12:02:34
n°1355706
zipe31
Posté le 06-04-2014 à 12:09:51  profilanswer
 


Pourtant, avec un listing du genre :

$ ls -1
Annee247
annee4
Annee4
annee41
Annee44
annee45
annee451
annee48
annee51
Annee51
Annee8
annee88


Le résultat est le bon :

$ ls annee?(4)?
annee4  annee41  annee45  annee48



---------------
$ man woman
n°1355707
zipe31
Posté le 06-04-2014 à 12:25:07  profilanswer
 

Par contre ce n'est pas bon si il y a des fichiers comme anneex  :(  
 

$ ls -1 annee?(4)?
annee4
annee41
annee45
annee48
annee8
annees


Comme quoi faut toujours pousser ses investigations jusqu'au bout  :pt1cable:


---------------
$ man woman
n°1355709
zipe31
Posté le 06-04-2014 à 14:44:05  profilanswer
 

Si la nuit porte conseil, manger aussi apparemment  :D  
 
Cette syntaxe devrait le faire :  

ls -1 annee4?([0-9])
annee4
annee41
annee45
annee48


 ;)


---------------
$ man woman
n°1355713
SnowBear
Ronchon :)
Posté le 06-04-2014 à 15:46:01  profilanswer
 

Benh_31 a écrit :


 
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 !
 
 


 

Benh_31 a écrit :


 
A quoi sert le %s dans ta commande ?  
 
et mettre (?) ça permet de rendre facultatif le caractère ?


 
Dans mon exemple j'ai zappé ta contrainte du nombre de caractères !  


---------------
Mes ventes
n°1355719
roondar
Posté le 06-04-2014 à 19:38:11  profilanswer
 

Benh_31 a écrit :

Bonjour à tous !
Je dois simplement afficher la liste des fichiers commençant par "annee4" et de sept lettres maximum sous entendu que ça peut faire moins.
!


Pour être conforme à ta demande :  

Citation :

find . -type f -regex './annee4.?'


n°1355725
Benh_31
Posté le 07-04-2014 à 08:25:53  profilanswer
 

Wahou, pas si facile que ça mon truc ^^ en tout cas merci pour votre intérêt !

n°1355731
O'Gure
Modérateur
Multi grognon de B_L
Posté le 07-04-2014 à 10:37:54  profilanswer
 

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                          
annee1  annee24  annee4  annee41  annee42  annee432
oggy@aoi ~/tmp/test-annee % ls | grep -E "^annee4[0-9]?$"
annee4
annee41
annee42


Message cité 1 fois
Message édité par O'Gure le 07-04-2014 à 10:38:02

---------------
Ton Antoine commence à me les briser menus !
n°1355732
Benh_31
Posté le 07-04-2014 à 10:48:01  profilanswer
 

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 ?


Message édité par Benh_31 le 07-04-2014 à 10:48:32
n°1355733
O'Gure
Modérateur
Multi grognon de B_L
Posté le 07-04-2014 à 10:57:03  profilanswer
 

Si, vu que tous tes exemples avaient des chiffre j'en concluais que c'était le format :o
Si tu veux n'importe quel caractère

oggy@aoi ~/tmp/test-annee % ls | grep -E "^annee4.?$"    
annee4
annee41
annee42


Message édité par O'Gure le 07-04-2014 à 10:57:38

---------------
Ton Antoine commence à me les briser menus !
n°1355743
Benh_31
Posté le 07-04-2014 à 13:31:28  profilanswer
 

ok, merci beaucoup

n°1426190
fel57
Posté le 23-11-2018 à 14:40:51  profilanswer
 

Merci à Timon pour la réponse.

mood
Publicité
Posté le   profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Linux et OS Alternatifs
  Codes et scripts

  [exp reg]liste des fichiers commençant par "annee4" et de 7 caractères

 

Sujets relatifs
Récupération de fichiers avec arborescence (EXT4)Rsync sauvegarder les fichiers date inférieure à 1 an
Recherche de fichiers par taille/type dans DD externe[ArchLinux/Manjaro] Obtenir la liste des programmes installés.
Supprimer les fichiers de plus d'un mois ou plus d'une semaineLister les fichiers en fonction de leurs droits
Transfert de fichiers avec knoppixsystemes de fichiers distribues
[résolu] Fichiers à récupérer avant formatagePartage de fichiers uniquement via VPN
Plus de sujets relatifs à : [exp reg]liste des fichiers commençant par "annee4" et de 7 caractères


Copyright © 1997-2018 Hardware.fr SARL (Signaler un contenu illicite) / Groupe LDLC / Shop HFR