renommer filterf en ff

This commit is contained in:
Jephté Clain 2025-09-09 11:15:12 +04:00
parent 88e6b9b92f
commit 28487e0240

View File

@ -12,13 +12,26 @@ function filter_arg() {
fi fi
done 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= chdir=
lsdirs= lsdirs=
lsfiles= lsfiles=
lsnames=
dir= dir=
file= file=
link= link=
broken=
exists= exists=
nonzero= nonzero=
inverse=0 inverse=0
@ -28,9 +41,11 @@ args=(
-C:,--chdir chdir= "changer le répertoire courant avant de lister les fichiers" -C:,--chdir chdir= "changer le répertoire courant avant de lister les fichiers"
--lsdirs . "n'afficher que les répertoires du répertoire courant" --lsdirs . "n'afficher que les répertoires du répertoire courant"
--lsfiles . "n'afficher que les fichiers 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" -d,--dir . "garder uniquement les répertoires"
-f,--file . "garder uniquement les fichiers" -f,--file . "garder uniquement les fichiers"
-L,--link . "garder uniquement les liens symboliques" -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" -e,--exists . "garder uniquement les fichiers/répertoires qui existent"
-s,--nonzero . "garder uniquement les fichiers ayant une taille non nulle" -s,--nonzero . "garder uniquement les fichiers ayant une taille non nulle"
-n,--inverse inverse=1 "inverser le sens du filtre" -n,--inverse inverse=1 "inverser le sens du filtre"
@ -43,16 +58,19 @@ fi
if in_isatty; then if in_isatty; then
# lister les fichiers # lister les fichiers
[ -n "$lsdirs" -o -n "$lsfiles" ] || { setx cwd=pwd
lsdirs=1 [ -n "$lsnames" ] && withpath= || withpath=1
lsfiles=1
}
if [ -n "$lsdirs" -a -n "$lsfiles" ]; then 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 elif [ -n "$lsdirs" ]; then
cmd="$(qvals ls_dirs . "$@")" cmd="$(qvals ls_dirs ${withpath:+-p} "$cwd" "$@")"
elif [ -n "$lsfiles" ]; then elif [ -n "$lsfiles" ]; then
cmd="$(qvals ls_files . "$@")" cmd="$(qvals ls_files ${withpath:+-p} "$cwd" "$@")"
else
cmd="$(qvals ls_all ${withpath:+-p} "$cwd" "$@")"
fi fi
else else
cmd="cat" cmd="cat"
@ -61,6 +79,7 @@ fi
[ -n "$dir" ] && cmd="$cmd | filter_arg $inverse -d" [ -n "$dir" ] && cmd="$cmd | filter_arg $inverse -d"
[ -n "$file" ] && cmd="$cmd | filter_arg $inverse -f" [ -n "$file" ] && cmd="$cmd | filter_arg $inverse -f"
[ -n "$link" ] && cmd="$cmd | filter_arg $inverse -L" [ -n "$link" ] && cmd="$cmd | filter_arg $inverse -L"
[ -n "$broken" ] && cmd="$cmd | filter_broken $inverse"
[ -n "$exists" ] && cmd="$cmd | filter_arg $inverse -e" [ -n "$exists" ] && cmd="$cmd | filter_arg $inverse -e"
[ -n "$nonzero" ] && cmd="$cmd | filter_arg $inverse -s" [ -n "$nonzero" ] && cmd="$cmd | filter_arg $inverse -s"
eval "$cmd" eval "$cmd"