Se devi assolutamente usare ls e grep, funziona:
ls -Fla | grep '^\S*x\S*'
Corrisponde alle righe in cui la prima parola (non spazi bianchi) contiene almeno una 'x'.
Find è lo strumento perfetto per questo. Questo trova tutti i file (-tipo f) che sono eseguibili:
find . -type f -executable
Se non vuoi che elenchi in modo ricorsivo tutti gli eseguibili, usa maxdepth:
find . -maxdepth 1 -type f -executable
Devi usare ls? Puoi usare find per fare lo stesso:
find . -maxdepth 1 -perm -111 -type f
restituirà tutti i file eseguibili nella directory corrente. Rimuovi il flag -maxdepth per attraversare tutte le directory figlie.
Potresti provare questa terribilità ma potrebbe corrispondere a file che contengono stringhe che sembrano autorizzazioni.
ls -lsa | grep -E "[d\-](([rw\-]{2})x){1,3}"
Forse con test -x?
for f in $(\ls) ; do test -x $f && echo $f ; done
\on ls ignorerà gli alias della shell.
for i in `ls -l | awk '{ if ( $1 ~ /x/ ) {print $NF}}'`; do echo `pwd`/$i; done
Questo fornisce percorsi assoluti agli eseguibili.