Je suis un peu perdu sur la façon de gérer les espaces dans les noms de chemin lorsqu'ils sont renvoyés dans une boucle for.
Justification : Je nettoie les autorisations sur les dossiers et les fichiers que je copie depuis Windows. La plupart des fichiers se retrouvent avec -rwx------
o -rwxr-xr-x
autorisations, j'aime donc faire " chmod -x *
" et ensuite " chmod u+x <folders>
"J'essaie donc ce qui suit :
$ alias getdirs='find . -maxdepth 1 -mindepth 1 -type d | cut -c 3-'
$ for i in $(getdirs); do chmod u+x $i; done
ce qui fonctionne bien, tant que les répertoires n'ont pas d'espace dans leur nom.
J'ai essayé différentes permutations de chmod u+x "$i"
, chmod u+x '$i'
et similaires pour obtenir le comportement que je souhaitais, mais en vain.
Comment améliorer mon code bash, qui fonctionne avec des noms de dossiers contenant des espaces ?
Les objectif de cela est de pouvoir supprimer le bit "exec" des fichiers simples (d'où le nom de chmod -x *
) mais ensuite de le restaurer dans les répertoires pour pouvoir y accéder ( chmod u+x <dirname>
). D'après les commentaires et les réponses reçus jusqu'à présent, je pense qu'il sera probablement plus facile de le faire avec la bonne incantation "trouver".