¿Qué hace este comando? Buscar comando con opciones

¿Qué hace este comando? Buscar comando con opciones

pero una pregunta ¿qué hace este comando? Sé el comando de búsqueda, pero no hay opciones, como la expresión entre comillas y también -exec y...

find /var -name "[0-9]*test[A-Z]" -exec  {} /root/{}';'

Respuesta1

find /varindica findque se inicie la búsqueda en el directorio /var.

-name "[0-9]*test[A-Z]"es el patrón de búsqueda para indicar findque se devuelvan solo archivos/carpetas que coincidan con el patrón "[0-9]*test[A-Z]". Si no cita la cadena de búsqueda, su shell expandirá ese patrón de búsqueda e intentará ejecutar el resultado. Al citar el patrón de búsqueda, lo pasa como argumento a find /var -name.

La -exec...parte de la pregunta original tiene un error de sintaxis y debería serlo -exec {} /root/{} ';'(tenga en cuenta el espacio antes ';'como lo comentaron postre y margarita).
Indica findque se ejecuten los siguientes argumentos, donde {}se reemplaza por el resultado de la búsqueda de find. Normalmente también deberías citarlos para evitar la expansión del shell.

Por último, ';'define cómo la -execsección debe manejar los resultados de la búsqueda al ejecutar el comando. ';'indica a find que ejecute el comando de -execpara cada resultado de búsqueda. Cuando se usa '+'en su lugar, el -execcomando se ejecuta con todos los resultados de búsqueda expandidos. Esto también debe citarse o escaparse para evitar que el caparazón lo expanda y presente un argumento find...-exec.

Un pequeño ejemplo que ilustra la diferencia entre ";"y "+"es el siguiente.

[user@localhost test]$ find . -name "[0-9]*test[A-Z]" -exec echo "{}" ";"
./12ltestA
./1ltestA
[user@localhost test]$ find . -name "[0-9]*test[A-Z]" -exec echo "{}" "+"
./12ltestA ./1ltestA

información relacionada