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

Script de sauvegarde incrémentée

3 réponses
Avatar
Pascal BOYER
Bonjour,

Je cherche à faire un script de sauvegarde qui incrémente le numéro de la
sauvegarde.
Exemple:
Je souhaite sauvegarder le fichier test.txt
Je voudrais que la 1er sauvegarde se nomme test.txt.0001
la 2eme sauvegarde sera test.txt.0002
et ainsi de suite

Merci de votre aide

Pascal


----------------------------------------------------------------
This message was sent using IMP, the Internet Messaging Program.


--
Pensez à lire la FAQ de la liste avant de poser une question :
http://wiki.debian.net/?DebianFrench

Pensez à rajouter le mot ``spam'' dans vos champs "From" et "Reply-To:"

To UNSUBSCRIBE, email to debian-user-french-REQUEST@lists.debian.org
with a subject of "unsubscribe". Trouble? Contact listmaster@lists.debian.org

3 réponses

Avatar
Jacques L'helgoualc'h
Pascal BOYER a écrit, jeudi 23 décembre 2004, à 18:27 :
Bonjour,



bonsoir.

Je cherche à faire un script de sauvegarde qui incrémente le numéro de la
sauvegarde.
Exemple:
Je souhaite sauvegarder le fichier test.txt
Je voudrais que la 1er sauvegarde se nomme test.txt.0001
la 2eme sauvegarde sera test.txt.0002
et ainsi de suite



Bash :

precedent="$(ls -1tr /chemin/des/svgd/ | tail -1)"
n="${precedent//*[.0]}"
n_plus_un="$(printf '%04d' $[ n + 1 ])"

Merci de votre aide



de rien,
--
Jacques L'helgoualc'h


--
Pensez à lire la FAQ de la liste avant de poser une question :
http://wiki.debian.net/?DebianFrench

Pensez à rajouter le mot ``spam'' dans vos champs "From" et "Reply-To:"

To UNSUBSCRIBE, email to
with a subject of "unsubscribe". Trouble? Contact
Avatar
Pascal BOYER
Selon Jacques L'helgoualc'h <lhh+:

Pascal BOYER a écrit, jeudi 23 décembre 2004, à 18:27 :
> Bonjour,

bonsoir.

> Je cherche à faire un script de sauvegarde qui incrémente le numéro de la
> sauvegarde.
> Exemple:
> Je souhaite sauvegarder le fichier test.txt
> Je voudrais que la 1er sauvegarde se nomme test.txt.0001
> la 2eme sauvegarde sera test.txt.0002
> et ainsi de suite

Bash :

precedent="$(ls -1tr /chemin/des/svgd/ | tail -1)"
n="${precedent//*[.0]}"
n_plus_un="$(printf '%04d' $[ n + 1 ])"

> Merci de votre aide

de rien,



Si, si, j'insiste: merci!!!

C'est très fort ton truc.

Si t'as trois minutes, tu peux m'expliquer le principe de //*[.0] et de %04d

Bonnes fêtes

Pascal
--
Jacques L'helgoualc'h


--
Pensez à lire la FAQ de la liste avant de poser une question :
http://wiki.debian.net/?DebianFrench

Pensez à rajouter le mot ``spam'' dans vos champs "From" et "Reply-To:"

To UNSUBSCRIBE, email to
with a subject of "unsubscribe". Trouble? Contact









----------------------------------------------------------------
This message was sent using IMP, the Internet Messaging Program.


--
Pensez à lire la FAQ de la liste avant de poser une question :
http://wiki.debian.net/?DebianFrench

Pensez à rajouter le mot ``spam'' dans vos champs "From" et "Reply-To:"

To UNSUBSCRIBE, email to
with a subject of "unsubscribe". Trouble? Contact
Avatar
Jacques L'helgoualc'h
Pascal BOYER a écrit, jeudi 23 décembre 2004, à 21:20 :
Selon Jacques L'helgoualc'h <lhh+:


[...]
> Bash :
>
> precedent="$(ls -1tr /chemin/des/svgd/ | tail -1)"
> n="${precedent//*[.0]}"
> n_plus_un="$(printf '%04d' $[ n + 1 ])"


[...]
Si t'as trois minutes, tu peux m'expliquer le principe de //*[.0] et de %04d



Au départ, j'essaie de récupérer l'extension du numéro avec ${precedent##*.}
qui supprime tout le début jusqu'au dernier point :

$ precedent=test.txt.0042
$ n=${precedent##*.}
$ echo $n
0042
$ echo $[ n + 1 ]
35

Pas glop, 0042 est en octal ; donc je passe à //*[.0], qui bouffe
avidement tout jusqu'au dernier point ou zéro... ah, merde, s'il y a un
zéro à la fin ça ne va plus !

$ precedent=test.txt.0040
$ n="${precedent##*.}"
$ echo $n
0040

Faire trois fois n=${n#0} est bourrin, mais on peut préciser la base :

$ echo $[ 10#$n + 1 ]
41

Donc finalement (désolé pour le bug)

precedent="$(ls -1tr /chemin/des/svgd/ | tail -1)"
n="${precedent##*.}"
n_plus_un="$(printf '%04d' $[ 10#$n + 1 ])"

Le printf '%04d' écrit le nombre n + 1 sur exactement quatre chiffres
décimaux, complétés à gauche par des zéros.


Bonnes fêtes



Merci, et bonnes fêtes à tous
--
Jacques L'helgoualc'h


--
Pensez à lire la FAQ de la liste avant de poser une question :
http://wiki.debian.net/?DebianFrench

Pensez à rajouter le mot ``spam'' dans vos champs "From" et "Reply-To:"

To UNSUBSCRIBE, email to
with a subject of "unsubscribe". Trouble? Contact