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

[zsh|sh] obtenir l'extension d'un fichier

28 réponses
Avatar
unbewusst.sein
pour un fichier "example.ext" je sais comment obtenir le nom du fichier
sans extension:
file="example.ext"

echo ${file:r}

mais comment, au "contraire", n'obtenir que l'extension ?

but de la manip :

convertir "example.ext" en "example_080727_145733.ext"

la partie "_080727_145733" étant obtenue par :
mtime=`stat -f "%m" /Users/yt/Desktop/ssh-scp/ssh_connect.zsh`
mtime_str=`date -r ${mtime} +"_%y%m%d_%H%M%S"`

il faut donc que j'ajoute ce "mtime_str" entre "example" et ".ext"
c'est pour faire un move...
--
Une Bévue

10 réponses

1 2 3
Avatar
unbewusst.sein
Eric Levenez wrote:

Par habitude.

> mtime_str=`date -r `stat -f "%m" $file` "+_%y%m%d_%H%M%S"`
> c'est pas bon ?

Si c'est bon, mais ça permet de faire, sans avoir à réécrire tout :

mtime_str="aaa `date -r `stat -f "%m" $file` "+_%y%m%d_%H%M%S"` bbb"



OK


>> Après, il faut regarder tous les cas particuliers pour traiter les
>> caractères spéciaux des chaînes. Le shell n'est pas fait pour cela.
>> Le mieux étant encore Perl pour faire ce que tu veux.
>
> oui, OK, chez moi, en tout cas, je n'ai pas de caractères spéciaux dans
> les chaines relatives aux pathes...

C'est ce que l'on pense, et puis un jour il y a un blanc, et là on efface
tout le disque dur. Demande à Apple lors d'une célèbre mise à jour...



ouais, je vois, mais, là, je traite les dirs différemment, en fait je ne
traite que le basename ainsi, dirname reste inchangé.

et, c'est juste pour traiter des fichiers aux noms bien définis, en fait
les fichiers s'appellent tjs :
Group.db
devicephonebook.db
j'ajoute un "timestamp" au nom du fichier pour pouvoir faire des
UNDO|REDO

d'ailleurs, tu pointes qqc d'intéressant avec le scp de ruby (net/scp)
je n'arrive pas à traiter le cas où il y a un blanc dans le path...

je n'arrive pas non plus à faire un cd sur le remote host (mon tél
portable), par programmation.

c'est ash qu'il y a sur mon portable, date fonctionne comme sur le mac,
stat ne donne pas mtime ???

mais bon, il n'y a pas les pages de man sur mon portable (qui utilise
BusyBox v1.9.1 sur un noyau 2.4.x).
--
Une Bévue
Avatar
patpro ~ patrick proniewski
In article
<1ikr133.b2nttv1pbuzbwN%,
(Une Bévue) wrote:

et chez moi (10.4.11) la commande stat ignore, silencieusement, -t
"_%y%m%d_%H%M%S"
et me retourne les secondes since epoch...



dommage...

patpro

--
A vendre : KVM IP 16 ports APC
http://patpro.net/blog/index.php/2008/01/12/133
Avatar
patpro ~ patrick proniewski
In article ,
Erwan David wrote:

patpro ~ patrick proniewski écrivait :

>
> en même temps, sous linux comme sous pas mal d'autres OS, sh n'est plus
> qu'un avatar de bash.

Non. Par exemple sur une debian ça peut être un dash, et utiliserf des
bashisme dans un script commençant par /bin/sh est un bug



faut faire un truc pour que ce soit dash plutot que bash ? parce que sur
mes 7 debian, c'est toujours un bash...


patpro

--
A vendre : KVM IP 16 ports APC
http://patpro.net/blog/index.php/2008/01/12/133
Avatar
Vincent Lefevre
Dans l'article <1ikqs3o.1283z0q1k40b86N%,
Une Bévue écrit:

pour un fichier "example.ext" je sais comment obtenir le nom du fichier
sans extension:
file="example.ext"



echo ${file:r}



mais comment, au "contraire", n'obtenir que l'extension ?



Si c'est avec zsh, echo ${file:e}

(cf page man zshexpn)

--
Vincent Lefèvre - Web: <http://www.vinc17.org/>
100% accessible validated (X)HTML - Blog: <http://www.vinc17.org/blog/>
Work: CR INRIA - computer arithmetic / Arenaire project (LIP, ENS-Lyon)
Avatar
unbewusst.sein
Vincent Lefevre <vincent+ wrote:


Si c'est avec zsh, echo ${file:e}

(cf page man zshexpn)



super ! merci bien !

--
Une Bévue
Avatar
unbewusst.sein
patpro ~ patrick proniewski wrote:


dommage...



sur mon tél portable, c'est plus sioux :
mtime_str=`date -r ${file} +"_%y%m%d_%H%M%S"`
shell : BusyBox 1.9.1 noyau 2.4.x

--
Une Bévue
Avatar
patpro ~ patrick proniewski
In article <1iks2fr.1r00arr1qq984uN%,
(Jacques Foucry) wrote:

Une Bévue wrote:

> echo ${file:r}

Utiliser des fonctions POSIX pour avoir un script PORTABLE.

sans_ext=`echo monfichier.txt | basename monfichier.txt .txt`



et pour trouver l'extension ? :)

patpro

--
A vendre : KVM IP 16 ports APC
http://patpro.net/blog/index.php/2008/01/12/133
Avatar
unbewusst.sein
Jacques Foucry wrote:


sans_ext=`echo monfichier.txt | basename monfichier.txt .txt`



ouais, mais là, il faut connaître l'extension à l'avance...
--
Une Bévue
Avatar
Thierry B.
--{ Jacques Foucry a plopé ceci: }--


Utiliser des fonctions POSIX pour avoir un script PORTABLE.

sans_ext=`echo monfichier.txt | basename monfichier.txt .txt`



C'est moi qui suis mal réveillé, je suppose, mais je n'arrive
pas à comprendre à quoi sert le echo ?-)


--
Deux visions du monde différentes: visions traditionnelles de
l'« ordre » par les hommes (= facilité à retrouver) et par
les femmes (= rangement à une place unique bien cachée).
--{ PH, dans fufe }--
Avatar
unbewusst.sein
Thierry B. wrote:

C'est moi qui suis mal réveillé, je suppose, mais je n'arrive
pas à comprendre à quoi sert le echo ?-)



ton réveil n'a pas sonné deux fois ? ;-)
--
Une Bévue
1 2 3