Pokud bezpodmínečně musíte použít ls a grep, funguje to:
ls -Fla | grep '^\S*x\S*'
Odpovídá řádkům, kde první slovo (bez mezer) obsahuje alespoň jedno 'x'.
Najít je k tomu ideální nástroj. To najde všechny soubory (-type f), které jsou spustitelné:
find . -type f -executable
Pokud nechcete, aby rekurzivně vypisoval všechny spustitelné soubory, použijte maxdepth:
find . -maxdepth 1 -type f -executable
Potřebujete použít ls? K tomu můžete použít find:
find . -maxdepth 1 -perm -111 -type f
vrátí všechny spustitelné soubory v aktuálním adresáři. Chcete-li procházet všemi podřízenými adresáři, odstraňte příznak -maxdepth.
Můžete zkusit tuto příšernost, ale může se shodovat se soubory, které obsahují řetězce, které vypadají jako oprávnění.
ls -lsa | grep -E "[d\-](([rw\-]{2})x){1,3}"
Možná s testem -x?
for f in $(\ls) ; do test -x $f && echo $f ; done
\ on ls obejde aliasy shellu.
for i in `ls -l | awk '{ if ( $1 ~ /x/ ) {print $NF}}'`; do echo `pwd`/$i; done
Tím získáte absolutní cesty ke spustitelným souborům.