Aquí hay un script que puede llamar pasando el modo como primer argumento y uno o más nombres de directorio como argumentos posteriores. En Linux, si no pasa ningún nombre de directorio, será como si hubiera pasado .
(el directorio actual). Asigne un nombre a este script rchmodf
, hágalo ejecutable ( chmod a+rx /path/to/rchmodf
) y colóquelo en algún lugar de su $PATH
.
#!/bin/sh
mode=$1; shift
find "$@" -type f -exec chmod "$mode" {} +
Explicaciones: mode=$1; shift
establece la variable mode
en el primer argumento de la secuencia de comandos y elimina ese primer argumento de la lista. "$@"
se expande a la lista de todos los argumentos.
Si lo desea, puede crear un script que acepte tanto un modo de directorio como un modo de archivo.
#!/bin/sh
dir_mode=$1; shift
file_mode=$1; shift
find "$@" -type d -exec chmod "$dir_mode" {} + -o -type f -exec chmod "$file_mode" {} +
Tenga en cuenta que 744 no es un modo de archivo útil; 644 (escribible por el usuario y legible por el mundo) y 755 (también ejecutable por el mundo) son mucho más comunes. Además, cambiar cada archivo en un árbol para que sea ejecutable o no ejecutable rara vez es útil; probablemente desee llamar a este script con argumentos como +rX
(mayúscula X
, para establecer el bit ejecutable solo para directorios y para archivos que ya son ejecutables). De hecho, el X
modo simbólico es probablemente lo que fueron después con estos guiones: chmod -R +rX .
.
Con bash o zsh, hay otra forma de actuar de forma recursiva pero solo en directorios. Para bash, necesitas la versión 4 y ejecutar shopt -s globstar
primero.
chmod a+rx **/*/
En zsh, puede actuar sobre los archivos sólo sufijando (.)
: chmod a+r **/*(.)
.
Pasaré la pregunta de Nautilus.
Gilles 'SO- deja de ser malvado'
fuente
Script vinculado por user23538, espero que no te importe.
Lo he intentado y funciona bien. Tenga en cuenta que si lo usa. como argumento de ruta (ejecútelo en el mismo directorio donde se encuentra el script), de hecho, cambia los permisos de archivo propios de los scripts a 644, así que póngalo en el directorio anterior.
fuente
Escribí un script que básicamente hace lo anterior, pero también proporciona un poco de flexibilidad para las opciones de línea de comando (permisos de directorio y / o archivo, o excluye ambos, restablece automáticamente todo a 755-644). También comprueba algunos escenarios de error.
http://bigfloppydonkeydisk.blogspot.com.au/2012/09/recursively-chmod-only-files-or.html
fuente