どうしても ls と grep を使用しなければならない場合、これでうまくいきます:
ls -Fla | grep '^\S*x\S*'
最初の単語 (空白以外) に少なくとも 1 つの「x」が含まれる行に一致します。
検索はこれに最適なツールです。これにより、実行可能なすべてのファイル (-type f) が検索されます:
find . -type f -executable
すべての実行可能ファイルを再帰的にリストしたくない場合は、maxdepth を使用します:
find . -maxdepth 1 -type f -executable
ls を使用する必要がありますか? find を使用して同じことを行うことができます:
find . -maxdepth 1 -perm -111 -type f
現在のディレクトリにあるすべての実行可能ファイルを返します。 -maxdepth フラグを削除して、すべての子ディレクトリを走査します。
この恐ろしさを試すこともできますが、パーミッションのように見える文字列を含むファイルと一致する可能性があります。
ls -lsa | grep -E "[d\-](([rw\-]{2})x){1,3}"
おそらくtest -xで?
for f in $(\ls) ; do test -x $f && echo $f ; done
ls の \ は、シェル エイリアスをバイパスします。
for i in `ls -l | awk '{ if ( $1 ~ /x/ ) {print $NF}}'`; do echo `pwd`/$i; done
これにより、実行可能ファイルへの絶対パスが与えられます。