diff --git a/bash/src/base.sh b/bash/src/base.sh index 9799bed..cd88e49 100644 --- a/bash/src/base.sh +++ b/bash/src/base.sh @@ -15,7 +15,8 @@ fi ##@include base.split.sh ##@include base.path.sh ##@include base.args.sh +##@include base.tools.sh ##@include base.input.sh ##@include base.output.sh module: base "Chargement de tous les modules base.*" -require: base.init base.core base.str base.num base.bool base.array base.split base.path base.args base.input base.output +require: base.init base.core base.str base.num base.bool base.array base.split base.path base.args base.tools base.input base.output diff --git a/bash/src/base.tools.sh b/bash/src/base.tools.sh new file mode 100644 index 0000000..b786213 --- /dev/null +++ b/bash/src/base.tools.sh @@ -0,0 +1,64 @@ +# -*- coding: utf-8 mode: sh -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8 +##@cooked nocomments +module: base.tools "Fonctions de base: outils divers" + +function __la_cmd() { + [ $# -gt 0 ] || set '*' + local arg + local cmd="/bin/ls -1d" + for arg in "$@"; do + arg="$(qwc "$arg")" + cmd="$cmd $arg" + done + cmd="$cmd 2>/dev/null" + echo "$cmd" +} + +function: ls_all 'Lister les fichiers ou répertoires du répertoire $1, un par ligne +Les répertoires . et .. sont enlevés de la liste +$1=un répertoire dont le contenu doit être listé +$2..@=un ensemble de patterns pour le listage' +function ls_all() { + local curdir="$(pwd)" + local b="${1:-.}"; shift + + cd "$b" 2>/dev/null || return + eval "$(__la_cmd "$@")" | while read f; do + [ "$f" == "." -o "$f" == ".." ] && continue + recho "$f" + done + cd "$curdir" +} + +function: ls_files 'Lister les fichiers du répertoire $1, un par ligne +$1=un répertoire dont le contenu doit être listé. +$2..@=un ensemble de patterns pour le listage' +function ls_files() { + local f + local curdir="$(pwd)" + local b="${1:-.}"; shift + + cd "$b" 2>/dev/null || return + eval "$(__la_cmd "$@")" | while read f; do + [ -f "$f" ] && recho "$f" + done + cd "$curdir" +} + +function: ls_dirs 'Lister les répertoires du répertoire $1, un par ligne +Les répertoires . et .. sont enlevés de la liste +$1=un répertoire dont le contenu doit être listé. +$2..@=un ensemble de patterns pour le listage' +function ls_dirs() { + local f + local curdir="$(pwd)" + local b="${1:-.}"; shift + + cd "$b" 2>/dev/null || return + eval "$(__la_cmd "$@")" | while read f; do + [ "$f" == "." -o "$f" == ".." ] && continue + [ -d "$f" ] && recho "$f" + done + cd "$curdir" +} +