#!/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