ufile: implémenter l'option -r
This commit is contained in:
parent
6e8c200803
commit
6ec37f6af4
4
TODO.md
4
TODO.md
|
@ -1,9 +1,5 @@
|
|||
# TODO
|
||||
|
||||
* ufile: ajouter l'option -r pour classer de façon récursive tous les fichiers
|
||||
d'un répertoire. cette option est automatiquement activée avec une
|
||||
confirmation si l'argument est un répertoire.
|
||||
|
||||
* ufile: chercher dans le répertoire courant (ou alors, le répertoire du fichier
|
||||
à classer?) un fichier .ufile.conf qui indique comment classer les fichiers.
|
||||
Eventuellement, chercher dans l'arborescence jusqu'au répertoire HOME de
|
||||
|
|
30
ufile
30
ufile
|
@ -37,6 +37,7 @@ forme pattern:destdir[:renamef]
|
|||
|
||||
USAGE
|
||||
$scriptname [options] <files...>
|
||||
$scriptname [options] -r <files|dirs...>
|
||||
|
||||
OPTIONS
|
||||
-c, --config CONFIG
|
||||
|
@ -56,6 +57,9 @@ OPTIONS
|
|||
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
|
||||
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
|
||||
Afficher les opérations qui seraient faites
|
||||
-l, --list
|
||||
|
@ -116,6 +120,7 @@ args=(%
|
|||
--force-cp force_cp=1
|
||||
-S:,--ssh: SSH=
|
||||
--force-scp force_scp=1
|
||||
-r,--recursive recursive=1
|
||||
-n,--fake fake=1
|
||||
-l,--list action=list
|
||||
-e,--edit action=edit
|
||||
|
@ -182,13 +187,28 @@ for rule in "${RULES[@]}"; do
|
|||
fi
|
||||
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
|
||||
r=
|
||||
for file in "$@"; do
|
||||
[ -f "$file" -o -n "$fake" ] || {
|
||||
eerror "$file: fichier introuvable. il sera ignoré"
|
||||
continue
|
||||
}
|
||||
for file in "${files[@]}"; do
|
||||
setx pf=abspath "$file"
|
||||
setx dir=dirname -- "$pf"
|
||||
setx filename=basename -- "$pf"
|
||||
|
|
Loading…
Reference in New Issue