Trouver tous *.sh fichiers dans le répertoire

Je veux trouver tous les *.sh fichiers dans un répertoire, mais il y a certaines erreurs dans le script...

#!/bin/sh
for plik in /var/panel/starter/*
do  
    if [ $(basename "$plik") != "priority" ] && [ $(basename "$plik") != "PRIORITY" ] 
    then
    for plik in $plik/*
    do
        filename=$(basename "$plik")
        extension="${filename##*.}"
        filename="${filename%.*}"
        if [ "$extension" == "sh" ]
        then
        echo $plik
        fi
    done
    fi
done 

Il y a quelques dossiers dans /var/panneau/de démarreur, et dans ces dossiers, il y a des scripts shell, c'est pourquoi j'ai utilisé pour la boucle deux fois.

C'est l'erreur:

[: 19: *: unexpected operator
[: 19: sh: unexpected operator
[: 19: sh: unexpected operator
[: 19: sh: unexpected operator
[: 19: *: unexpected operator

Je crois que le problème est avec des dossiers vides comme:

/var/panel/starter/cs16/*

et je n'ai pas une idée de la façon de les gérer.

pouvez-vous juste find -name "*.sh" ? si vous voulez faire un peu de filtre que vous pourriez utiliser -regex ou de rediriger la sortie vers grep. ou j'ai mal compris votre exigence
/var/panel/starter/*.sh?
C'était seulement un exemple. Plus tard je veux exécuter des scripts. Au lieu de echo $scellé, il sera sh $scellé. Sans if [ "$extension" == "sh" ] condition qu'il exécute également /var/panel/starter/cs16/* et j'essaie de l'éviter. @devnull, il ne fonctionne pas.

OriginalL'auteur Filip Frątczak | 2013-08-06