En utilisant chmod
, je fais chmod +x *.sh
dans le répertoire courant, mais que faire si je veux modifier tous les fichiers, y compris les fichiers dans les sous-dossiers qui ont une extension de fichier sh?.
chmod +x -R *
fonctionnera mais j'ai besoin de quelque chose de plus comme chmod +x -R *.sh
utilisez find:
find . -name "*.sh" -exec chmod +x {} \;
Essayez d'utiliser la combinaison glorieuse de find avec xargs.
find . -iname \*.sh -print0 | xargs -r0 chmod +x
Le .
est le répertoire dans lequel commencer, dans ce cas le répertoire de travail.
Avec les versions modernes de find
, vous bénéficiez des avantages d'une approche xargs
qui évite plusieurs appels à 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 ( accentuation ajouté par moi):
-exec command {} +
Cette variante du
-exec
action exécute la commande spécifiée sur les fichiers sélectionnés, mais la ligne de commande est créée en ajoutant à la fin chaque nom de fichier sélectionné; le nombre total d'appels 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.