![¿Qué hace este comando? Buscar comando con opciones](https://rvso.com/image/1157173/%C2%BFQu%C3%A9%20hace%20este%20comando%3F%20Buscar%20comando%20con%20opciones.png)
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 /var
indica find
que se inicie la búsqueda en el directorio /var
.
-name "[0-9]*test[A-Z]"
es el patrón de búsqueda para indicar find
que 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 find
que 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 -exec
sección debe manejar los resultados de la búsqueda al ejecutar el comando. ';'
indica a find que ejecute el comando de -exec
para cada resultado de búsqueda. Cuando se usa '+'
en su lugar, el -exec
comando 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