ufile: support des pattern regex

This commit is contained in:
Jephté Clain 2017-10-17 22:45:47 +04:00
parent 6130c2ff7f
commit 7bd0a95b3e
1 changed files with 11 additions and 3 deletions

12
ufile
View File

@ -12,7 +12,11 @@ Dans ce fichier, le tableau RULES contient des règles qui sont chacune de la
forme pattern:destdir[:renamef] forme pattern:destdir[:renamef]
- pattern est au format glob et identifie les fichiers auxquels s'applique la - pattern est au format glob et identifie les fichiers auxquels s'applique la
règle règle, sauf si la chaine commence par / auquel cas il s'agit d'une expression
régulière reconnue par awk. Par exemple, les deux patterns suivants sont
équivalents:
[ab]cd*.pdf
/[ab]cd.*\\\\.pdf\$
- destdir est le répertoire de destination dans lequel classer le fichier - destdir est le répertoire de destination dans lequel classer le fichier
- renamef est une fonction qui permet de supporter le renommage d'un fichier - renamef est une fonction qui permet de supporter le renommage d'un fichier
lors de son classement. Sa signature est 'renamef filename pf destdir' où lors de son classement. Sa signature est 'renamef filename pf destdir' où
@ -107,7 +111,7 @@ function __set_dest() {
setx dest=abspath "$dest" setx dest=abspath "$dest"
else else
__check_destdir "$destdir" "$rule" || return 1 __check_destdir "$destdir" "$rule" || return 1
setx dest=joinp "$destdir" "$filename" setx dest=joinp "$destdir" "$dest"
fi fi
upvar dest "$dest" upvar dest "$dest"
return 0 return 0
@ -223,7 +227,11 @@ for file in "${files[@]}"; do
odestdir="$HOME" odestdir="$HOME"
fi fi
if [ "${pattern#/}" != "$pattern" ]; then
awk -v filename="$filename" -v pattern="${pattern#/}" 'BEGIN { exit(filename ~ pattern? 0: 1) }' || continue
else
eval "[[ \"\$filename\" == $(qwc "$pattern") ]]" || continue eval "[[ \"\$filename\" == $(qwc "$pattern") ]]" || continue
fi
unset dest unset dest
interaction=--DEFAULT-- interaction=--DEFAULT--