Voici un script que vous pouvez appeler en passant le mode comme premier argument et un ou plusieurs noms de répertoire comme arguments suivants. Sous Linux, si vous ne passez aucun nom de répertoire, ce sera comme si vous aviez passé .
(le répertoire courant). Nommez ce script rchmodf
, rendez-le exécutable ( chmod a+rx /path/to/rchmodf
) et placez-le quelque part sur votre $PATH
.
#!/bin/sh
mode=$1; shift
find "$@" -type f -exec chmod "$mode" {} +
Explications: mode=$1; shift
définit la variable mode
sur le premier argument du script et supprime ce premier argument de la liste. "$@"
se développe à la liste de tous les arguments.
Si vous le souhaitez, vous pouvez créer un script qui accepte à la fois un mode répertoire et un mode fichier.
#!/bin/sh
dir_mode=$1; shift
file_mode=$1; shift
find "$@" -type d -exec chmod "$dir_mode" {} + -o -type f -exec chmod "$file_mode" {} +
Notez que 744 n'est pas un mode de fichier utile; 644 (inscriptibles par l'utilisateur et lisibles par le monde) et 755 (également exécutables par le monde) sont beaucoup plus courants. De plus, changer chaque fichier d'une arborescence pour être exécutable ou ne pas l'être est rarement utile; vous voudrez probablement appeler ce script avec des arguments comme +rX
(majuscule X
, pour définir le bit exécutable uniquement pour les répertoires et pour les fichiers qui sont déjà exécutables). En fait, le X
mode de symbolique est probablement ce que vous étiez après ces scripts: chmod -R +rX .
.
Avec bash ou zsh, il existe une autre façon d'agir récursivement mais uniquement sur les répertoires. Pour bash, vous avez besoin de la version 4 et d'exécuter en shopt -s globstar
premier.
chmod a+rx **/*/
En zsh, vous pouvez agir sur les fichiers que par suffixation (.)
: chmod a+r **/*(.)
.
Je vais transmettre la question Nautilus.
Gilles 'SO- arrête d'être méchant'
la source
Script lié à par user23538, j'espère que cela ne vous dérange pas.
Je l'ai essayé et ça marche bien. Veuillez noter que si vous utilisez. comme argument de chemin (exécutez-le dans le même répertoire où se trouve le script), il modifie en fait les autorisations de fichier du script sur 644, alors placez-le dans le répertoire ci-dessus.
la source
J'ai écrit un script qui fait essentiellement ce qui précède mais fournit également un peu de flexibilité pour les options de ligne de commande (autorisations de répertoire et / ou de fichier, ou exclut les deux, il réinitialise automatiquement tout à 755-644). Il vérifie également quelques scénarios d'erreur.
http://bigfloppydonkeydisk.blogspot.com.au/2012/09/recursively-chmod-only-files-or.html
la source