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
-exec
l'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 quexargs
construit 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.