¿Cómo cambiar los permisos de múltiples archivos encontrados con el comando find?

11

Tengo un directorio con numerosos archivos. Parte de los archivos tiene los 755permisos y la otra parte tiene 644permisos. Me gustaría convertir los archivos con 755permisos a 644. He intentado la siguiente línea ejecutándola desde el directorio:

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

Sin embargo, como resultado, el permiso cambió solo para el directorio en sí y después de cambiarlo nuevamente, descubrí que los permisos de los archivos permanecieron sin cambios. ¿Echo de menos algo?

Eugene S
fuente
Su comando elimina el bit ejecutable del directorio, lo que hace que sea imposible acceder a él y ver los archivos que contiene. Es por eso que el comando no parece estar funcionando. Intenta en su find ./ -type f -exec chmod -x {} \;lugar.
Shadur

Respuestas:

16

Ok, parece que he encontrado el problema. Parece que debe haber un espacio obligatorio entre {}y \;, por lo que el comando se verá así:

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

Más bien que:

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

Además, el problema con el cambio de los permisos del directorio se puede resolver agregando un -type findicador, por lo que se verá de la siguiente manera:

find . -type f -perm 755 -exec chmod 644 {} \;
Eugene S
fuente
55
Puede usar en +lugar de \;reducir la cantidad de subprocesos creados.
Kevin
-type dEncontrará directorios. -type fencontrará archivos
Mick T