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 19/04/2022, à 20:16

Sciensous

[Résolu]shell, fichiers et regex pour 0 ou 1 caractère

salut, pas simple de faire un titre explicite alors je détaille wink

existe-t-il une façon simple de faire un ls ou cat sur un nom générique de dossier avec une incertitude sur un seul  caractère ?

exemple: je veux afficher un fichier texte.txt dans un sous dossier dont le nom peut changer à une lettre près, comme zSousdossier ou tSousdossier
ce qui marche :

 cat *Sousdossier/texte.txt 

mais y-t-il un équivalent au regex \? (0 ou 1 caractère) plutôt que * (tout les caractères) qui est trop vaste ?

Ou je me prends la tête pour rien car le gain entre les 2 serait ridicule !?

merci d'avance pour votre aide
wink

Dernière modification par Sciensous (Le 20/04/2022, à 08:18)


antiX 19 et 21 et Ubuntu 20.04 et 22.04
( sous LXDE et gnome-shell )

Hors ligne

#2 Le 19/04/2022, à 20:24

kholo

Re : [Résolu]shell, fichiers et regex pour 0 ou 1 caractère

salut...
j'ai contourné la question autrement :

find . -iname texte.txt -exec cat '{}' \;

...
ou

cat ?Sousdossier/texte.txt

Dernière modification par kholo (Le 19/04/2022, à 20:26)

Hors ligne

#3 Le 19/04/2022, à 20:28

Watael

Re : [Résolu]shell, fichiers et regex pour 0 ou 1 caractère

salut,

le shell ne gère pas les regex dans le contexte général.

le Développement des chemins indique :
? : un caractère unique,
* : n'importe quelle chaîne.
il y a aussi les intervalles, et autres classes entre crochets...


Connected \o/
Welcome to sHell. · eval is evil.

Hors ligne

#4 Le 19/04/2022, à 20:28

Sciensous

Re : [Résolu]shell, fichiers et regex pour 0 ou 1 caractère

@kholo le rapido: je suis désolé ça ne va pas car en fait c'est dans un script que je vais l'utiliser pour plusieurs pc avec le nom de sousdossier qui peut changer un peu
du genre

var="$(cat ~/*Sousdossier/texte.txt)"

et pour le coup le find est trop "puissant" et trop illisible par rapport au simple cat wink

@Watael: j'ai bien essayé le ? mais ça remplace un caractère et pas 0 ou 1

je suppose que ce n'est possible à cause de "le shell ne gère pas les regex dans le contexte général."


Du coup je crois que je vais en rester là: ça fonctionne bien avec *Sousdossier mais c'était pour exclure d'éventuels abSousdossier et ne prendre que un seul caractère avec Sousdossier

Dommage mais pour mon script maison ça suffira largement
et puis c'était aussi pour mon apprentissage
(pas facile à avoir ce genre de renseignement bien précis sur le net)

merci quand même Kholo et Watael

Dernière modification par Sciensous (Le 19/04/2022, à 20:49)


antiX 19 et 21 et Ubuntu 20.04 et 22.04
( sous LXDE et gnome-shell )

Hors ligne

#5 Le 19/04/2022, à 20:36

Watael

Re : [Résolu]shell, fichiers et regex pour 0 ou 1 caractère

c'est possible, avec bash (au moins)  avec les Développement de chemins "améliorés" (extglob) :

$ shopt -s extglob
$ ls ?(?)Sousdossier/texte.txt

Connected \o/
Welcome to sHell. · eval is evil.

Hors ligne

#6 Le 19/04/2022, à 20:40

Sciensous

Re : [Résolu]shell, fichiers et regex pour 0 ou 1 caractère

lol
ok mais c'est trop "complexe" pour mon script basique


antiX 19 et 21 et Ubuntu 20.04 et 22.04
( sous LXDE et gnome-shell )

Hors ligne

#7 Le 19/04/2022, à 20:42

kholo

Re : [Résolu]shell, fichiers et regex pour 0 ou 1 caractère

re...
je ne comprend pas le côté trop puissant...
le find exécute un cat avec le résultat et à l'avantage de renvoyer une chaine vide si il ne trouve rien...

et si tu as une idée de la lettre

cat [a-z]Sousdossier/texte.txt

ou si tu fais une recherche plus complexe, peut être avec du python...

Hors ligne

#8 Le 19/04/2022, à 20:45

Watael

Re : [Résolu]shell, fichiers et regex pour 0 ou 1 caractère

à part l'astérisque, qui inclut la chaîne nulle, je ne vois pas de solution simple.


Connected \o/
Welcome to sHell. · eval is evil.

Hors ligne

#9 Le 19/04/2022, à 20:46

Sciensous

Re : [Résolu]shell, fichiers et regex pour 0 ou 1 caractère

@kholo: justement c'est soit zéro soit un caractère, or le ? ou les [] ne marchent que s'il y a un caractère au moins

@watael: oui c'est ce que j'en déduis
pas grave, inutile de se prendre la tête (c'est juste dommage que ça n'existe pas pour les développements de chemin -jamais j'aurais pensé à cette expression wink )

Dernière modification par Sciensous (Le 19/04/2022, à 20:48)


antiX 19 et 21 et Ubuntu 20.04 et 22.04
( sous LXDE et gnome-shell )

Hors ligne

#10 Le 19/04/2022, à 20:50

kholo

Re : [Résolu]shell, fichiers et regex pour 0 ou 1 caractère

oui...
ça peut vite devenir une usine à gaz si tu cherches avec  0 caracère

Hors ligne

#11 Le 19/04/2022, à 22:42

kholo

Re : [Résolu]shell, fichiers et regex pour 0 ou 1 caractère

... re re lol
trouvé : les accolades pour le nombre de caractères !!!

cat {,[a-zA-Z0-9]}Sousdossier/texte.txt

nombre d’occurrence à 0 ou 1 lettre contenue dans un modèle


marche aussi avec find... cool

find ./{,[a-zA-Z0-9]}Sousdossier -iname texte.txt

et donc avec le find et cat

find ./{,[a-zA-Z0-9]}Sousdossier -iname texte.txt -exec cat '{}' \;

Hors ligne

#12 Le 19/04/2022, à 22:47

Watael

Re : [Résolu]shell, fichiers et regex pour 0 ou 1 caractère

oui, c'est une bonne idée !
mais est-ce assez simple pour Sciensous ? tongue

normal que ça marche avec find : ça marche avec toutes les commandes, puisque c'est bash qui fait ce développement !

Dernière modification par Watael (Le 19/04/2022, à 22:48)


Connected \o/
Welcome to sHell. · eval is evil.

Hors ligne

#13 Le 19/04/2022, à 22:52

kholo

Re : [Résolu]shell, fichiers et regex pour 0 ou 1 caractère

merci Watael
oui... je pense... c'est bizarrement très simple...
les accolades pour quantifier les occurrences...

pour find, c'était juste pour dire...
en fait je cherchais avec python mais ça ne fonctionne pas tel quel !!!
... mais je vais creuser pour ma culture perso... je suis plus python en ce moment !! lol

Hors ligne

#14 Le 20/04/2022, à 08:18

Sciensous

Re : [Résolu]shell, fichiers et regex pour 0 ou 1 caractère

ah oui bien vu smile

oui c'est assez simple pour moi tongue

encore merci kholo et Watael


antiX 19 et 21 et Ubuntu 20.04 et 22.04
( sous LXDE et gnome-shell )

Hors ligne