Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Bash : obtenir les 3 premières lettres du nom d'un fichier

18 réponses
Avatar
Olivier V
Bonjour,

Comment obtenir, dans un script, les 3 premières lettres du nom d'un fichier
(connu sous $cible) ?

Merci

Olivier V

8 réponses

1 2
Avatar
lhabert
Olivier V :

Et pour ma culture personnelle, comment aurait fait pour supprimer les deux
dernières lettres ?


${ploum%??}

Le « % » a pour effet de supprimer le plus court suffixe qui matche le
pattern qui suit. Le pattern « ? » matche un caractère quelconque, le
pattern « ?? » matche une suite de deux caractères quelconques.

J'ai essayé ${${ploum%?}%?}, mais sans succès.


Si tu veux le faire en deux étapes, il faut passer par une variable
intermédiaire :

A=${ploum%?}
puis ${A%?}

J'utilise la commande 'ttf2pt1' qui me renvoie en console des lignes
(extrait ci-dessous).


Par exemple :

ttf2pt1 ... | grep '^FontName ' | cut -d' ' -f2

Avatar
Olivier V

Le « % » a pour effet de supprimer le plus court suffixe qui matche le
pattern qui suit. Le pattern « ? » matche un caractère quelconque, le
pattern « ?? » matche une suite de deux caractères quelconques.


OK

Par exemple :

ttf2pt1 ... | grep '^FontName ' | cut -d' ' -f2


La commande a l'air de fonctionner,
mais il faudrait que je puisse ensuite récupérer ce qu'elle est sensée
sortir (ici ComicSansMS) à l'intérieur du script, par exemple par $fname.

Qu'est ce qui manque ?

Olivier V

[ 7_type1_pfa]$ sudo ttf2pt1 -a -e comic.ttf fcor8a | grep
'^FontName ' | cut -d' ' -f2
Using language 'latin1' for Unicode fonts
Auto-detected front-end parser 'ttf'
(use ttf2pt1 -p? to get the full list of available front-ends)
Processing file comic.ttf
Creating file fcor8a.pfa
numglyphs = 574
Glyph 260 has the same name as 168: (increment), changing to _d_260
Found Unicode Encoding
Guessed italic angle: 0.000000
FontName ComicSansMS
No Kerning data
Finished - font files created
[ 7_type1_pfa]$

Avatar
lhabert
Olivier V :

mais il faudrait que je puisse ensuite récupérer ce qu'elle est sensée
sortir (ici ComicSansMS) à l'intérieur du script, par exemple par $fname.


fname=`ttf2pt1 ... | grep '^FontName ' | cut -d' ' -f2`

Avatar
Olivier V

Olivier V :

mais il faudrait que je puisse ensuite récupérer ce qu'elle est sensée
sortir (ici ComicSansMS) à l'intérieur du script, par exemple par $fname.


fname=`ttf2pt1 ... | grep '^FontName ' | cut -d' ' -f2`


C'est étrange, fnname à l'air d'être vide :

[ 7_type1_pfa]$ fnname=`sudo ttf2pt1 -a -e fcor8a.ttf fcor8a |
grep '^FontName ' | cut -d' ' -f2`
Using language 'latin1' for Unicode fonts
Auto-detected front-end parser 'ttf'
(use ttf2pt1 -p? to get the full list of available front-ends)
Processing file fcor8a.ttf
Creating file fcor8a.pfa
numglyphs = 574
Glyph 260 has the same name as 168: (increment), changing to _d_260
Found Unicode Encoding
Guessed italic angle: 0.000000
FontName ComicSansMS
No Kerning data
Finished - font files created
[ 7_type1_pfa]$ echo $fnname

[ 7_type1_pfa]$

Alors que :

[ 7_type1_pfa]$ fnname=test
[ 7_type1_pfa]$ echo $fnname
test


Qu'en pensez-vous ?

Olivier V


Avatar
lhabert
Olivier V :

[ 7_type1_pfa]$ fnname=`sudo ttf2pt1 -a -e fcor8a.ttf fcor8a |
grep '^FontName ' | cut -d' ' -f2`
Using language 'latin1' for Unicode fonts
Auto-detected front-end parser 'ttf'
(use ttf2pt1 -p? to get the full list of available front-ends)
Processing file fcor8a.ttf
Creating file fcor8a.pfa
numglyphs = 574
Glyph 260 has the same name as 168: (increment), changing to _d_260
Found Unicode Encoding
Guessed italic angle: 0.000000
FontName ComicSansMS
No Kerning data
Finished - font files created



Si tu as tous les messages qui sortent, c'est que ttf2pt1 n'envoie pas sa
sortie dans l'entrée de grep. Tu avais testé avant ou pas?


Essaye voire :

fnname=`sudo ttf2pt1 -a -e fcor8a.ttf fcor8a 2>&1 | grep '^FontName ' | cut -d' ' -f2`

Avatar
Sébastien Monbrun aka TiChou
Dans le message <news:dqo6k0$1qbu$,
*Luc Habert* tapota sur f.c.o.l.configuration :

ttf2pt1 ... | grep '^FontName ' | cut -d' ' -f2


ou aussi :

$ ttf2pt1 ... | awk '/^FontName/{print $2}'

ou pourquoi pas :

$ ttf2pt1 ... | sed -n '/^FontName (.*)/s//1/p'

--
Sébastien Monbrun aka TiChou

Avatar
Olivier V

Essaye voire :

fnname=`sudo ttf2pt1 -a -e fcor8a.ttf fcor8a 2>&1 | grep '^FontName ' |
cut -d' ' -f2`


Ca marche.

Merci encore.

Olivier V

Avatar
oli-cla
Bonjour,

Comment obtenir, dans un script, les 3 premières lettres du nom d'un fichier
(connu sous $cible) ?

Merci

Olivier V


Salut,

ca aussi devrait marcher, autant de points que de caractère à récupérer,
ici 3 points pour les 3 premières lelttres

nom=$(expr "$cible" : "(...)")

Bye,

1 2