Intégration de la branche update-ufile

This commit is contained in:
Jephté Clain 2017-09-22 21:15:34 +04:00
commit 36eec4a517
1 changed files with 25 additions and 5 deletions

30
ufile
View File

@ -37,6 +37,7 @@ forme pattern:destdir[:renamef]
USAGE USAGE
$scriptname [options] <files...> $scriptname [options] <files...>
$scriptname [options] -r <files|dirs...>
OPTIONS OPTIONS
-c, --config CONFIG -c, --config CONFIG
@ -56,6 +57,9 @@ OPTIONS
Toujours utiliser scp pour une copie distante. Par défaut s'il est Toujours utiliser scp pour une copie distante. Par défaut s'il est
déterminé que l'hôte distant est en réalité l'hôte courant, alors la déterminé que l'hôte distant est en réalité l'hôte courant, alors la
copie est effectuée directement. copie est effectuée directement.
-r, --recursive
Classer récursivement tous les fichiers d'un répertoire. Sans cette
option, il n'est pas autorisé de fournir un répertoire comme argument.
-n, --fake -n, --fake
Afficher les opérations qui seraient faites Afficher les opérations qui seraient faites
-l, --list -l, --list
@ -116,6 +120,7 @@ args=(%
--force-cp force_cp=1 --force-cp force_cp=1
-S:,--ssh: SSH= -S:,--ssh: SSH=
--force-scp force_scp=1 --force-scp force_scp=1
-r,--recursive recursive=1
-n,--fake fake=1 -n,--fake fake=1
-l,--list action=list -l,--list action=list
-e,--edit action=edit -e,--edit action=edit
@ -182,13 +187,28 @@ for rule in "${RULES[@]}"; do
fi fi
done done
# faire la liste des fichiers
files=()
for file in "$@"; do
if [ -d "$file" -a -n "$recursive" ]; then
setx file=abspath "$file"
array_from_lines rfiles "$(find "$file" -type f)"
array_extendu files rfiles
elif [ -f "$file" ]; then
setx file=abspath "$file"
array_addu files "$file"
elif [ -n "$fake" ]; then
: # on est en mode fake, pas grave si le fichier n'est pas trouvé
elif [ -d "$file" ]; then
eerror "$file: est un répertoire. essayez avec -r"
else
eerror "$file: fichier introuvable. il sera ignoré"
fi
done
# faire le classement effectif # faire le classement effectif
r= r=
for file in "$@"; do for file in "${files[@]}"; do
[ -f "$file" -o -n "$fake" ] || {
eerror "$file: fichier introuvable. il sera ignoré"
continue
}
setx pf=abspath "$file" setx pf=abspath "$file"
setx dir=dirname -- "$pf" setx dir=dirname -- "$pf"
setx filename=basename -- "$pf" setx filename=basename -- "$pf"