46 lines
1.4 KiB
Bash
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"
|
|
}
|