GNU/Linux >> Tutoriales Linux >  >> Linux

¿Cómo detener el comando Buscar después de la primera coincidencia?

¿Hay alguna forma de forzar find? comando para detenerse justo después de encontrar la primera coincidencia?

Respuesta aceptada:

Con GNU o FreeBSD find , puede usar -quit predicado:

find . ... -print -exit

find de NetBSD equivalente:

find . ... -print -exit

Si todo lo que hace es imprimir el nombre y suponiendo que los nombres de los archivos no contienen caracteres de nueva línea, podría hacer lo siguiente:

find . ... -print | head -n 1

Eso no detendrá find después del primer partido, pero posiblemente, dependiendo del tiempo y el almacenamiento en búfer en el segundo partido o (mucho) más tarde. Básicamente, find terminará con un SIGPIPE cuando intente generar algo mientras head ya se ha ido porque ya ha leído y mostrado la primera línea de entrada.

Tenga en cuenta que no todos los shells esperarán a que find comando después de head ha regresado. Las implementaciones de Bourne Shell y AT&T de ksh (cuando no es interactivo) y yash (solo si esa tubería es el último comando en un script) no lo haría, dejándolo ejecutándose en segundo plano. Si prefiere ver ese comportamiento en cualquier shell, siempre puede cambiar lo anterior a:

(find . ... -print &) | head -n 1

Si está haciendo algo más que imprimir las rutas de los archivos encontrados, puede probar este enfoque:

find . ... -exec sh -c 'printf "%sn" "$1"; kill "$PPID"' sh {} ;

(reemplace printf con lo que sea que estarías haciendo con ese archivo).

Eso tiene el efecto secundario de find devolviendo un estado de salida que refleja el hecho de que fue eliminado.

En realidad, usar la señal SIGPIPE en lugar de SIGTERM (kill -s PIPE en lugar de kill ) hará que algunos proyectiles guarden más silencio sobre esa muerte (pero aún devolverán un estado de salida distinto de cero).


Linux
  1. Cómo auditar permisos con el comando de búsqueda

  2. Cómo encontrar archivos en CentOS 8 en la línea de comandos

  3. ¿Cómo usar el comando basename?

  4. ¿Cómo integrar el comando Mv después del comando Buscar?

  5. ¿Cómo se interpreta el comodín * como un comando?

Cómo encontrar archivos en Linux con el comando Buscar

Búsqueda de archivos en la línea de comandos (instrucciones)

Cómo encontrar archivos en la línea de comandos de Ubuntu

Cómo encontrar archivos con el comando fd en Linux

¿Cómo averiguar los principales directorios o archivos que consumen espacio?

¿Cómo capturar la primera dirección IP de un comando ifconfig?