Pregunta:
¿Es posible usar 2 comandos en la parte -exec
del comando de find
?
Probé algo como:
find . -name "*" -exec chgrp -v new_group {} ; chmod -v 770 {} \;
y obtengo:
encontrar: argumento faltante para -exec
chmod: no se puede acceder {}: no existe tal archivo o directorio
chmod: no se puede acceder;: no existe tal archivo o directorio
Respuesta:
En cuanto al comando de find
, también puede agregar más comandos -exec
en una fila:
find . -name "*" -exec chgrp -v new_group '{}' \; -exec chmod -v 770 '{}' \;
Tenga en cuenta que este comando es, en su resultado, equivalente a usar
chgrp -v archivo nuevo_grupo && chmod -v archivo 770
en cada archivo.
Todas las find
parámetros 's como -name
, -exec
, -size
y así sucesivamente, son en realidad pruebas: find
continuará funcionando uno por uno, siempre y cuando toda la cadena hasta el momento ha evaluado como true. Por lo tanto, cada comando -exec
consecutivo se ejecuta solo si los anteriores devolvieron verdadero (es decir, el estado de salida 0
de los comandos). Pero find
también comprende operadores lógicos como o ( -o
) y no ( !
). Por lo tanto, para usar una cadena de pruebas -exec
independientemente de los resultados anteriores, se necesitaría usar algo como esto:
find . -name "*" \( -exec chgrp -v new_group {} \; -o -true \) -exec chmod -v 770 {} \;