diff --git a/fndate b/fndate index 78faa74..1e12a26 100755 --- a/fndate +++ b/fndate @@ -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,22 +257,24 @@ 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 - force_date="$l" - set -- "${@:1:$(($# - 1))}" - elif [[ "$l" == @* ]] && [ -z "${l2//[0-9\/]}" -a ! -e "$l2" ]; then - force_date="$l2" - set -- "${@:1:$(($# - 1))}" + 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 @@ -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" - read_value "Veuillez confirmer le nom" destname "$destname" + 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" + 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"