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
|
# 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
|
* 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.
|
à classer?) un fichier .ufile.conf qui indique comment classer les fichiers.
|
||||||
Eventuellement, chercher dans l'arborescence jusqu'au répertoire HOME de
|
Eventuellement, chercher dans l'arborescence jusqu'au répertoire HOME de
|
||||||
|
|
30
ufile
30
ufile
|
@ -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"
|
||||||
|
|
Loading…
Reference in New Issue