nulib/bash/src/fndate.sh

46 lines
1.4 KiB
Bash

# -*- coding: utf-8 mode: sh -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
##@cooked nocomments
module: fndate "gestion de fichiers dont le nom contient la date"
function: fndate_verifix "\
corriger le chemin \$1 pour ajouter le cas échéant une date au nom du fichier
le fichier n'existe peut-être pas au moment où cette fonction est appelée
\$2 est l'extension finale du fichier, à ignorer si elle est présente
(elle n'est cependant pas ajoutée si elle n'est pas présente)
\$3 est la date à sélectionner (par défaut c'est la date du jour)
XXX à implémenter:
- gestion de la date
- ajout d'un suffixe .N le cas échéant (i.e YYMMDD.NN)
"
function fndate_verifix() {
local dir filename ext date
if [[ "$1" == */* ]]; then
dir="$(dirname -- "$1")"
filename="$(basename -- "$1")"
else
dir=
filename="$1"
fi
ext="$2"
if [ -n "$ext" ]; then
ext=".${2#.}"
if [ "${filename%$ext}" != "$filename" ]; then
filename="${filename%$ext}"
else
ext=
fi
fi
date="$3"
[ -n "$date" ] || date="$(date +%y%m%d)"
case "$filename" in
~~-*) filename="$date-${filename#~~-}";;
~~*) filename="$date-${filename#~~}";;
*-~~) filename="${filename%-~~}-$date";;
*~~) filename="${filename%~~}-$date";;
esac
echo "${dir:+$dir/}$filename$ext"
}