Wenn Sie unbedingt ls und grep verwenden müssen, funktioniert dies:
ls -Fla | grep '^\S*x\S*'
Es findet Zeilen, in denen das erste Wort (kein Leerzeichen) mindestens ein 'x' enthält.
Find ist dafür das perfekte Tool. Dies findet alle Dateien (-Typ f), die ausführbar sind:
find . -type f -executable
Wenn Sie nicht möchten, dass alle ausführbaren Dateien rekursiv aufgelistet werden, verwenden Sie maxdepth:
find . -maxdepth 1 -type f -executable
Müssen Sie ls verwenden? Sie können find verwenden, um dasselbe zu tun:
find . -maxdepth 1 -perm -111 -type f
gibt alle ausführbaren Dateien im aktuellen Verzeichnis zurück. Entfernen Sie das Flag -maxdepth, um alle untergeordneten Verzeichnisse zu durchlaufen.
Sie könnten diese Schrecklichkeit ausprobieren, aber es könnte Dateien finden, die Zeichenfolgen enthalten, die wie Berechtigungen aussehen.
ls -lsa | grep -E "[d\-](([rw\-]{2})x){1,3}"
Vielleicht mit test -x?
for f in $(\ls) ; do test -x $f && echo $f ; done
Das \ auf ls wird Shell-Aliase umgehen.
for i in `ls -l | awk '{ if ( $1 ~ /x/ ) {print $NF}}'`; do echo `pwd`/$i; done
Dies gibt absolute Pfade zu den ausführbaren Dateien.