utilisez trouver :
find . -name "*.sh" -exec chmod +x {} \;
Essayez d'utiliser la glorieuse combinaison de find avec xargs.
find . -iname \*.sh -print0 | xargs -r0 chmod +x
Le . est le répertoire de démarrage, dans ce cas le répertoire de travail.
Avec les versions modernes de find , vous bénéficiez des avantages d'un xargs approche qui évite les appels multiples à la commande (chmod ). La commande n'est que légèrement différente.
find . -name "*.sh" -exec chmod +x {} +
Extrait de find docs sur Arch 2015.09.01 (emphase ajouté par moi):
-exec command {} +Cette variante du
-execl'action exécute la commande spécifiée sur les fichiers sélectionnés, mais la ligne de commande est construite en ajoutant chaque nom de fichier sélectionné à la fin ; le nombre total d'invocations de la commande sera bien inférieur au nombre de fichiers correspondants . La ligne de commande est construite de la même manière quexargsconstruit ses lignes de commande. Une seule instance de{}est autorisé dans la commande. La commande est exécutée dans le répertoire de départ.