¿Cómo cambio de permisos de archivo a un determinado patrón de archivo a las subcarpetas de mi directorio actual?
-
27-09-2019 - |
Pregunta
El uso de chmod
, hago chmod +x *.sh
en el directorio actual, pero lo que si quiero cambiar todos los archivos incluidos los archivos dentro de las subcarpetas que tiene una extensión de archivo sh?.
chmod +x -R *
funcionará pero necesito algo más parecido a chmod +x -R *.sh
Solución
encuentran uso:
find . -name "*.sh" -exec chmod +x {} \;
Otros consejos
Trate de usar la combinación gloriosa de encontrar con xargs.
find . -iname \*.sh -print0 | xargs -r0 chmod +x
El .
es el directorio para iniciar en, en este caso, el directorio de trabajo.
Con las versiones modernas de find
, obtendrá los beneficios de un enfoque que evite xargs
varias llamadas a la orden (chmod
). El comando es sólo ligeramente diferente.
find . -name "*.sh" -exec chmod +x {} +
Snip de find
docs en Arco 01/09/2015 ( énfasis agregado por mí):
-exec command {} +
Esta variante del recurso
-exec
ejecuta el comando especificado en los archivos seleccionados, , pero la línea de comandos se construye añadiendo el nombre de cada archivo seleccionado al final; el número total de invocaciones del comando será mucho menor que el número de archivos coincidentes . La línea de comandos se construye de la misma manera quexargs
construye sus líneas de comando. Sólo se permite una instancia de{}
dentro del comando. El comando se ejecuta en el directorio de inicio.