2017-05-28 1 views

Répondre

0

OK - si vous devez utiliser grep:

ls -l | grep '^[^d]..[sx]' | awk '{ print $9 }' 
+0

Merci c'est correct.Toute idée de ce que j'ai mal fait? – nikojov

+0

Supprimer l'astérisque après votre 'x'. – Jack

+0

Pour plus de clarté, 'x *' signifie "ZERO ou plusieurs occurrences de x". – Jack

0

N'utilisez pas grep. Si vous voulez savoir si un fichier est exécutable, utilisez test -x. Pour vérifier tous les fichiers dans le répertoire courant, utilisez find ou une boucle:

for f in *; do test -f "$f" -a -x "$f" && echo "$f"; done 

ou

find . -maxdepth 1 -type f -exec test -x {} \; -print 
+0

D'accord, mais je suis en train de trouver une erreur dans ma commande grep, J'étais sûr que je comprends comment grep est utilisé et ne trouve toujours pas d'erreur ici. – nikojov

0

Utilisation awk avec match

ls -l|awk 'match($1,/^...x/) {print $9}' 
  • match($1,/^...x/): correspondre premier champ l'expression régulière ^...x, c.-à-d. recherche pour l'autorisation du propriétaire se terminant par x.
+0

Cela correspondra également aux répertoires. Pensez à utiliser '/^[^ d] .. x /' comme motif – Dave

1

Vous pouvez utiliser find avec l'option -perm:

find . -maxdepth 1 -type f -perm -u+x 
+0

Ma question était de savoir comment le faire en utilisant grep – nikojov

+0

https://edm00se.io/assets/images/post_images/right-tool-for-job- jekyll/scottySays.jpg – Jack

+0

ou 'trouver. -maxdepth 1 -type f -executable – Cyrus