61 lines
1.3 KiB
Bash
Executable File
61 lines
1.3 KiB
Bash
Executable File
#!/bin/bash
|
|
# -*- coding: utf-8 mode: sh -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
|
|
ALIASES=(regmv)
|
|
if [ "$#" -eq 1 -a "$1" == --nutools-makelinks ]; then
|
|
# créer les liens
|
|
scriptname="$(basename "$0")"
|
|
for alias in "${ALIASES[@]}"; do
|
|
ln -s "$scriptname" "$alias"
|
|
done
|
|
exit 0
|
|
fi
|
|
|
|
source "$(dirname -- "$0")/lib/ulib/auto" || exit 1
|
|
|
|
case "$scriptname" in
|
|
regcp)
|
|
VERB="copier"
|
|
CMD=cp
|
|
;;
|
|
regmv)
|
|
VERB="déplacer"
|
|
CMD=mv
|
|
;;
|
|
esac
|
|
|
|
function display_help() {
|
|
uecho "$scriptname: $VERB un fichier vers une destination construite avec une expressions régulière
|
|
|
|
USAGE
|
|
$scriptname REGEXP FILEs....
|
|
|
|
NB: l'expression régulière est traitée avec sed, e.g s/FROM/TO/
|
|
NB: le support de regexp-extended est activé
|
|
|
|
OPTIONS
|
|
-n, --fake
|
|
Ne pas $VERB, afficher simplement ce qui serait fait"
|
|
}
|
|
|
|
fake=
|
|
args=(
|
|
--help '$exit_with display_help'
|
|
-n,--fake fake=1
|
|
)
|
|
parse_args "$@"; set -- "${args[@]}"
|
|
|
|
regexp="$1"; shift
|
|
[ -n "$regexp" ] || die "l'expression régulière est requise"
|
|
|
|
for src in "$@"; do
|
|
dest="$(sed -r "$regexp" <<<"$src")"
|
|
if [ "$src" == "$dest" ]; then
|
|
eerror "$src: refus de $VERB le fichier sur lui-même"
|
|
else
|
|
estep "$src --> $dest"
|
|
if [ -z "$fake" ]; then
|
|
"$CMD" "$src" "$dest" || die
|
|
fi
|
|
fi
|
|
done
|