reginc: possibilité de renommer des fichiers

This commit is contained in:
Jephté Clain 2024-06-17 10:44:53 +04:00
parent 1787aa2310
commit e4176dfd94
1 changed files with 94 additions and 45 deletions

81
reginc
View File

@ -12,24 +12,29 @@ remplacer les nombres de FROMmin à FROMmax par leur valeur correspondante,
sachant que FROMmin doit être remplacé par TO. On peut mentionner autant de sachant que FROMmin doit être remplacé par TO. On peut mentionner autant de
couples (FROM, TO) que nécessaire: ils seront traités dans l'ordre couples (FROM, TO) que nécessaire: ils seront traités dans l'ordre
$scriptname -r FROMmin-FROMmax TO FILEs...
renommer les fichiers en remplaçant les nombres de FROMmin à FROMmax par leur
valeur correspondante, sachant que FROMmin doit être remplacé par TO
OPTIONS OPTIONS
-n, --fake -n, --fake
Afficher le fichier tel qu'il serait modifié au lieu de le modifier en Afficher le fichier tel qu'il serait modifié au lieu de le modifier en
place" place
-r, --rename
Renommer les fichiers au lieu de modifier le texte à l'intérieur du
fichier. Attention, l'ordre des arguments est différent avec cette
option"
} }
fake= function process_file() {
args=( local file from to fromb frome seds r
--help '$exit_with display_help'
-n,--fake fake=1
)
parse_args "$@"; set -- "${args[@]}"
file="$1"; shift file="$1"; shift
[ -n "$file" ] || die "vous devez spécifier le fichier à modifier" [ -n "$file" ] || die "vous devez spécifier le fichier à modifier"
seds= seds=
while [ $# -ge 2 ]; do while [ $# -ge 2 ]; do
from="$1" from="$1"
if [[ "$from" == *-* ]]; then if [[ "$from" == *-* ]]; then
let fromb="${from%-*}" let fromb="${from%-*}"
@ -64,10 +69,54 @@ while [ $# -ge 2 ]; do
let to=to-1 let to=to-1
done done
fi fi
done done
edebug "Script sed: $seds" edebug "Script sed: $seds"
[ -n "$fake" ] && args=() || args=(-i) [ -n "$Fake" ] && args=() || args=(-i)
args+=("$seds" "$file") args+=("$seds" "$file")
sed "${args[@]}" sed "${args[@]}"; r=$?
[ -z "$Fake" -a $r -eq 0 ]
}
Fake=
rename=
args=(
--help '$exit_with display_help'
-n,--Fake Fake=1
-r,--rename rename=1
)
parse_args "$@"; set -- "${args[@]}"
if [ -n "$rename" ]; then
from="$1"; to="$2"; shift 2
froms=("$@")
ac_set_tmpfile tmptos
echo "tos=(" >>"$tmptos"
for file in "${froms[@]}"; do
qval "$file" >>"$tmptos"
done
echo ")" >>"$tmptos"
Fake= process_file "$tmptos" "$from" "$to"
eval "$(<"$tmptos")"
i=0
count=${#froms[*]}
while [ $i -lt $count ]; do
from="${froms[$i]}"
to="${tos[$i]}"
if [ "$to" == "$from" ]; then
ewarn "$from: renommage non nécessaire"
else
estep "$from --> $to"
[ -z "$Fake" ] && mv "$from" "$to"
fi
let i=i+1
done
else
process_file "$@"
fi