Cambiar permisos de directorios
Ayer preguntaban en la lista de correo de Hispalinux cómo cambiar de forma recursiva los permisos de unos directorios, pero respetando los permisos que tuvieran los ficheros. Aunque la respuesta era bastante trivial despues pensé que quizás no era tan trivial para otras personas, así que expongo la solución, que por otra parte viene tambien si miramos el man del comando find.
Evidentemente, si ejecutamos chmod -R 0777 ./* nos encontraremos con que nos cambian los permisos de todo lo que cuelga del directorio ./, ya sean ficheros o directorios.
Una forma de solucionarlo es mediante el comando find. Este comando nos permite hacer búsquedas por nombre de fichero, tamaño, fecha, etc, y de forma adicional nos permite realizar operaciones sobre el resultado de la búsqueda. Para el asunto que tratamos bastaría con hacer:
find . -type d -exec chmod 0777 {} \;
Buscamos a partir del directorio ./, le decimos además que los ficheros tienen que ser de tipo d, es decir directorios, y sobre el resultado ejecutamos el comando chmod con las opciones indicadas. Las llaves son un sinónimo de resultado de la búsqueda del find.
Buena herramienta, el find.