From 28487e0240b5208180280a3331e8e9f4cc856044 Mon Sep 17 00:00:00 2001 From: Jephte Clain Date: Tue, 9 Sep 2025 11:15:12 +0400 Subject: [PATCH] renommer filterf en ff --- bin/{filterf => ff} | 33 ++++++++++++++++++++++++++------- 1 file changed, 26 insertions(+), 7 deletions(-) rename bin/{filterf => ff} (66%) diff --git a/bin/filterf b/bin/ff similarity index 66% rename from bin/filterf rename to bin/ff index e8f602a..42a0d43 100755 --- a/bin/filterf +++ b/bin/ff @@ -12,13 +12,26 @@ function filter_arg() { fi done } +function filter_broken() { + local inverse="$1"; shift + while read arg; do + [ -L "$arg" ] || continue + if [ "$inverse" == 0 ]; then + [ -e "$arg" ] || echo "$arg" + else + [ -e "$arg" ] && echo "$arg" + fi + done +} chdir= lsdirs= lsfiles= +lsnames= dir= file= link= +broken= exists= nonzero= inverse=0 @@ -28,9 +41,11 @@ args=( -C:,--chdir chdir= "changer le répertoire courant avant de lister les fichiers" --lsdirs . "n'afficher que les répertoires du répertoire courant" --lsfiles . "n'afficher que les fichiers du répertoire courant" + --lsnames . "n'afficher que les noms de fichier" -d,--dir . "garder uniquement les répertoires" -f,--file . "garder uniquement les fichiers" -L,--link . "garder uniquement les liens symboliques" + -b,--broken . "garder uniquement les liens symboliques cassés" -e,--exists . "garder uniquement les fichiers/répertoires qui existent" -s,--nonzero . "garder uniquement les fichiers ayant une taille non nulle" -n,--inverse inverse=1 "inverser le sens du filtre" @@ -43,16 +58,19 @@ fi if in_isatty; then # lister les fichiers - [ -n "$lsdirs" -o -n "$lsfiles" ] || { - lsdirs=1 - lsfiles=1 - } + setx cwd=pwd + [ -n "$lsnames" ] && withpath= || withpath=1 if [ -n "$lsdirs" -a -n "$lsfiles" ]; then - cmd="{ $(qvals ls_dirs . "$@"); $(qvals ls_files . "$@"); }" + cmd="{ +$(qvals ls_dirs ${withpath:+-p} "$cwd" "$@") +$(qvals ls_files ${withpath:+-p} "$cwd" "$@") +}" elif [ -n "$lsdirs" ]; then - cmd="$(qvals ls_dirs . "$@")" + cmd="$(qvals ls_dirs ${withpath:+-p} "$cwd" "$@")" elif [ -n "$lsfiles" ]; then - cmd="$(qvals ls_files . "$@")" + cmd="$(qvals ls_files ${withpath:+-p} "$cwd" "$@")" + else + cmd="$(qvals ls_all ${withpath:+-p} "$cwd" "$@")" fi else cmd="cat" @@ -61,6 +79,7 @@ fi [ -n "$dir" ] && cmd="$cmd | filter_arg $inverse -d" [ -n "$file" ] && cmd="$cmd | filter_arg $inverse -f" [ -n "$link" ] && cmd="$cmd | filter_arg $inverse -L" +[ -n "$broken" ] && cmd="$cmd | filter_broken $inverse" [ -n "$exists" ] && cmd="$cmd | filter_arg $inverse -e" [ -n "$nonzero" ] && cmd="$cmd | filter_arg $inverse -s" eval "$cmd"