Si vous devez absolument utiliser ls et grep, cela fonctionne :
ls -Fla | grep '^\S*x\S*'
Il correspond aux lignes où le premier mot (non blanc) contient au moins un 'x'.
Find est l'outil parfait pour cela. Cela trouve tous les fichiers (-type f) qui sont exécutables :
find . -type f -executable
Si vous ne voulez pas qu'il liste récursivement tous les exécutables, utilisez maxdepth :
find . -maxdepth 1 -type f -executable
Avez-vous besoin d'utiliser ls? Vous pouvez utiliser find pour faire la même chose :
find . -maxdepth 1 -perm -111 -type f
renverra tous les fichiers exécutables du répertoire courant. Supprimez l'indicateur -maxdepth pour parcourir tous les répertoires enfants.
Vous pouvez essayer cette horreur, mais cela peut correspondre à des fichiers contenant des chaînes qui ressemblent à des autorisations.
ls -lsa | grep -E "[d\-](([rw\-]{2})x){1,3}"
Peut-être avec test -x ?
for f in $(\ls) ; do test -x $f && echo $f ; done
Le \ sur ls contournera les alias du shell.
for i in `ls -l | awk '{ if ( $1 ~ /x/ ) {print $NF}}'`; do echo `pwd`/$i; done
Cela donne des chemins absolus aux exécutables.