Comment changer les autorisations de plusieurs fichiers trouvés avec la commande find?

11

J'ai un répertoire avec de nombreux fichiers. Une partie des fichiers a les 755autorisations et l'autre partie a des 644autorisations. Je voudrais convertir les fichiers avec des 755autorisations en 644. J'ai essayé la ligne suivante en l'exécutant à partir du répertoire lui-même:

find . -perm 755 -exec chmod 644 {}\;

Cependant, en conséquence, l'autorisation n'a changé que pour le répertoire lui-même et après l'avoir changé, j'ai découvert que les autorisations sur les fichiers restaient inchangées. Dois-je manquer quelque chose?

Eugene S
la source
Votre commande supprime le bit exécutable du répertoire, ce qui rend impossible de le chdir et de regarder les fichiers qu'il contient. C'est pourquoi la commande ne semble pas fonctionner. Essayez find ./ -type f -exec chmod -x {} \;plutôt.
Shadur

Réponses:

17

Ok, il semble que j'ai trouvé le problème. Il semble qu'il doit y avoir un espace obligatoire entre le {}et \;, donc la commande ressemblera à ceci:

find . -perm 755 -exec chmod 644 {} \;

Plutôt que:

find . -perm 755 -exec chmod 644 {}\;

Le problème de modification des autorisations de répertoire peut également être résolu en ajoutant un -type findicateur, il ressemblera donc à ceci:

find . -type f -perm 755 -exec chmod 644 {} \;
Eugene S
la source
6
Vous pouvez utiliser +au lieu de \;pour réduire le nombre de sous-processus créés.
Kevin
-type dtrouvera des répertoires. -type ftrouvera des fichiers.
Mick T