fndate: maj doc et améliorations ergonomiques

This commit is contained in:
Jephté Clain 2017-05-04 21:49:56 +04:00
parent d5f4ae25c0
commit c25160c63b
1 changed files with 33 additions and 21 deletions

38
fndate
View File

@ -60,14 +60,14 @@ OPTIONS
PLACEHOLDER vaut ~~. Si le nom spécifié ne contient pas le PLACEHOLDER,
il est placé au début.
-@, --force-date DATE
Dans le nom spécifié, si la date est déjà présente, forcer son
remplacement par la valeur spécifiée. Par défaut, le fichier n'est pas
modifié si la date est déjà présente.
S'il y a au moins 2 arguments et si le premier ou le dernier argument
ressemblent à une date (ie. d/m[/y] ou @d[/m[/y]]) et qu'aucun fichier
de ce nom n'existe dans le répertoire courant, activer automatiquement
cette option, sauf si l'option --no-auto-force-date est spécifié aussi.
Les commandes suivantes sont équivalentes:
Si une date du format attendu est déjà présente dans le nom du fichier,
forcer son remplacement par la valeur spécifiée. Par défaut, le fichier
n'est pas modifié si la date est déjà présente.
Si le premier ou le dernier argument de ce script ressemblent à une date
(ie. d/m[/y] ou @d[/m[/y]]) et qu'aucun fichier de ce nom n'existe dans
le répertoire courant, activer automatiquement cette option, sauf si
l'option --no-auto-force-date est spécifiée aussi. Ainsi, les commandes
suivantes sont équivalentes:
$scriptname -@ d/m/y file
$scriptname d/m/y file
$scriptname file @d/m/y
@ -257,23 +257,25 @@ parse_opts "${PRETTYOPTS[@]}" \
--autof autof=1 \
@ args -- "$@" && set -- "${args[@]}" || die "$args"
if [ $# -gt 1 -a -z "$force_date" -a -n "$auto_force_date" ]; then
if [ -z "$force_date" -a -n "$auto_force_date" ]; then
# si le premier ou le dernier argument ressemblent à une date
f="$1"; f2="${f#@}"
l="${@:$#}"; l2="${l#@}"
if [[ "$f" == */* ]] && [ -z "${f//[0-9\/]}" -a ! -e "$f" ]; then
force_date="$f"
shift
elif [[ "$f" == @* ]] && [ -z "${f2//[0-9\/]}" -a ! -e "$f2" ]; then
force_date="$f2"
shift
elif [[ "$l" == */* ]] && [ -z "${l//[0-9\/]}" -a ! -e "$l" ]; then
elif [ $# -gt 1 ]; then
l="${@:$#}"; l2="${l#@}"
if [[ "$l" == */* ]] && [ -z "${l//[0-9\/]}" -a ! -e "$l" ]; then
force_date="$l"
set -- "${@:1:$(($# - 1))}"
elif [[ "$l" == @* ]] && [ -z "${l2//[0-9\/]}" -a ! -e "$l2" ]; then
force_date="$l2"
set -- "${@:1:$(($# - 1))}"
fi
fi
fi
[ -n "$create" ] || create=file
@ -358,14 +360,24 @@ elif [ "$action" == create ]; then
setx dir=dirname -- "$src"
setx srcname=basename -- "$src"
if [ -e "$src" ]; then
estep "Renommage de $(ppath "$src")"
setx destname=replace_ph "$srcname" "$force_date"
setx dest=abspath "$dir/$destname"
[ "$src" != "$dest" ] || ewarn "La source et la destination sont identiques"
confirm_do=1
if [ "$src" == "$dest" ]; then
if [ -n "$force_date" ]; then
ewarn "La source et la destination sont identiques"
else
estepi "$(ppath "$src"): aucun renommage nécessaire"
confirm_do=
fi
fi
if [ -n "$confirm_do" ]; then
estep "Renommage de $(ppath "$src")"
read_value "Veuillez confirmer le nom" destname "$destname"
setx dest=abspath "$dir/$destname"
[ "$src" != "$dest" ] && mv -i "$src" "$dir/$destname"
fi
else
setx destname=replace_ph "$srcname" "$force_date"
setx dest=abspath "$dir/$destname"