A find -exec
respuesta es buena, pero adolece de la deficiencia generalmente irrelevante que crea un subproceso separado para cada archivo. Sin embargo, es perfectamente funcional y solo funcionará mal cuando la cantidad de archivos sea realmente grande. El uso de xargs
combinará los nombres de los archivos en grupos grandes antes de ejecutar un subproceso para ese grupo de archivos.
Solo debe tener cuidado de que, al usar xargs
, maneje adecuadamente los nombres de archivo con espacios incrustados, saltos de línea u otros caracteres especiales en ellos.
Una solución que resuelve estos dos problemas es (suponiendo que tiene una bastante decente find
y xargs
aplicación):
find . -type f -print0 | xargs -0 chmod 644
Los -print0
causas find
para poner fin a los nombres de archivo en su flujo de salida con un carácter NUL (en lugar de un espacio) y el -0
a xargs
le informa que debe esperar que como formato de entrada.
Esto se debe pedir en ServerFault – MoshiBin
chmod realmente debe ser capaz de diferenciar entre los archivos, enlaces y carpetas en su propio. – Xeoncross