GNU/Linux >> Tutoriales Linux >  >> Linux

Buscar -exec + Vs Buscar | Xargs:¿Cuál elegir?

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!
Linux
  1. Grep recursivo Vs Find / -type F -exec Grep {}; ¿Cuál es más eficiente/más rápido?

  2. ¿Salir de Find si falla un -exec?

  3. ¿Cómo encontrar qué puerto serie está en uso?

  4. ¿Reformatear una gran cantidad de archivos Xml?

  5. find -exec una función de shell en Linux?

CentOS vs Ubuntu:cuál elegir para su servidor web

Ubuntu vs. Fedora:¿Cuál debería elegir?

Cómo encontrar qué servicio está escuchando en un puerto en particular

¿Cómo decirle a Xargs qué argumento elegir?

Linux Mint Cinnamon vs MATE:¿Cuál elegir?

Encuentra qué proceso está modificando un archivo