Entiendo que el -exec
puede tomar un +
opción para imitar el comportamiento de xargs
. ¿Hay alguna situación en la que prefiera una forma sobre la otra?
Personalmente, tiendo a preferir la primera forma, aunque solo sea para evitar usar una tubería. Supongo que seguramente los desarrolladores de find
debe haber hecho las optimizaciones apropiadas. ¿Estoy en lo cierto?
Respuesta aceptada:
Es posible que desee encadenar llamadas para encontrar (una vez, cuando supo que es posible, que podría ser hoy). Esto, por supuesto, solo es posible mientras te quedes en find. Una vez que canaliza a xargs, está fuera del alcance.
Pequeño ejemplo, dos archivos a.lst y b.lst:
cat a.lst
fuddel.sh
fiddel.sh
cat b.lst
fuddel.sh
No hay truco aquí, simplemente el hecho de que ambos contienen "fuddel" pero solo uno contiene "fiddel".
Supongamos que no sabíamos eso. Buscamos un archivo que cumpla 2 condiciones:
find -exec grep -q fuddel {} ";" -exec grep -q fiddel {} ";" -ls
192097 4 -rw-r--r-- 1 stefan stefan 20 Jun 27 17:05 ./a.lst
Bueno, tal vez conozca la sintaxis de grep u otro programa para pasar ambas cadenas como condición, pero ese no es el punto. Todos los programas que pueden devolver verdadero o falso, dado un archivo como argumento, se pueden usar aquí; grep fue solo un ejemplo popular.
Y tenga en cuenta que puede seguir find -exec con otros comandos de búsqueda, como -ls o -eliminar o algo similar. Tenga en cuenta que delete no solo hace rm (elimina archivos), sino también rmdir (elimina directorios).
Tal cadena se lee como una combinación AND de comandos, siempre que no se especifique lo contrario (es decir, con un -or
switch (y parens (que necesitan enmascaramiento))).
Por lo tanto, no está abandonando la cadena de búsqueda, lo cual es algo útil. No veo ninguna ventaja en usar -xargs, ya que debe tener cuidado al pasar los archivos, que es algo que find no necesita hacer:automáticamente maneja pasar cada archivo como un solo argumento para usted.
Si cree que necesita algo de enmascaramiento para encontrar {} llaves, no dude en visitar mi pregunta que solicita evidencia. Mi afirmación es:no lo haces.
Relacionado:adherencia -Encontrar significado- ¡Búsqueda en el diccionario!