Pascal BOYER a écrit, jeudi 23 décembre 2004, à 21:20 : > Selon Jacques L'helgoualc'h <[EMAIL PROTECTED]>: [...] > > 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