GNU/Linux >> Tutoriales Linux >  >> Linux

Comando de búsqueda de Linux:muestra el progreso

Solución 1:

con este truco puedes ver la carpeta actual, pero no la barra de progreso, lo siento.

 watch readlink -f /proc/$(pidof find)/cwd

Solución 2:

Una pequeña utilidad llamada pv (visor de tuberías) puede ayuda. Del fantástico resumen de Peteris Krumins:

El visor de tuberías es una herramienta basada en terminal para monitorear el progreso de los datos a través de una tubería.

Puede usar pv de varias maneras. Cuando juego por aquí, lo coloco inmediatamente después de una canalización para monitorear el progreso de la salida generada por find (debe pasar stdin a stdout sin tocar)

find / -mtime -1h | pv > /dev/null

que mostrará un resultado un poco como este:

6.42MB 0:01:25 [31.7kB/s] [         <=>      ]

(Redirigí stdout a /dev/null para poder ver la barra de progreso en acción sin que la salida pasara volando. Es probable que esta no sea su intención con find, así que adapte en consecuencia)

Honestamente, no estoy seguro de qué tan bien funciona esto en la naturaleza. Para hallazgos "caros" como el anterior (atravesando desde la raíz), pareció funcionar bastante bien. Para comandos más simples en un nodo más profundo en el árbol de directorios, pv falló miserablemente. Estos comandos devuelven resultados inmediatamente, por lo que una barra de progreso probablemente sea discutible aquí.

En cualquier caso, juegue y vea si esto funciona para lo que necesita. Alimento para el pensamiento, al menos.

Solución 3:

Busqué esto hoy y llegué aquí a través de Google. Tuve un hallazgo de larga duración ejecutándose en OS X y aparentemente, watch no existe allí. Así que aquí hay otra solución:

lsof -Fn -a -c find -d cwd +r 10

  • lsof =lista de archivos abiertos
  • -Fn =solo muestra el nombre del archivo/directorio (con el prefijo 'n', omite esto si prefieres el lsof completo salida
  • -a =decirle a lsof para mostrar solo las líneas que coinciden con todas criterios (de forma predeterminada, muestra las líneas que coinciden con cualquiera criterios)
  • -c find =mostrar archivos/directorios abiertos por el proceso llamado find (en realidad, proceso cuyo nombre comienza con find , pero distingue entre mayúsculas y minúsculas, por lo que Finder no aparecerá)
  • -d cwd =mostrar líneas con FD (descriptor de archivo) cwd (directorio de trabajo actual)
  • +r 10 =mostrar la salida cada 10 segundos hasta que no se encuentren archivos abiertos (la búsqueda ha finalizado)

Esto mostrará el directorio find se procesa cada 10 segundos, por lo que debería dar una idea si find sigue funcionando y cuánto ha progresado.

Solución 4:

Hay un ejemplo de búsquedas paralelas con find en man find . Usándolo, puede realizar múltiples comprobaciones para cada elemento, realizando múltiples acciones según la condición que funcione. La primera comprobación puede ser, por ejemplo, simple-print , por lo que todos los nombres se imprimen en la salida estándar. El segundo cheque hará lo que quieras. Algo como:

find /work \( -fprint /dev/stderr \) , \( -name 'core' -exec rm {} \; \)

Si la segunda verificación también debe mostrar nombres de archivo, puede redirigir uno de ellos a stderr usando -fprint /dev/stderr .

Solución 5:

AFAIK, no es así, e implementarlo no sería trivial.

... Mmm. Tal vez un script que ejecuta find <target dir> -type d primero, almacenando la lista y luego haciendo eco de cada directorio antes de ejecutar un find <list item> -maxdepth 1 <rest of find parameters> en un bucle for.

Tenga en cuenta que está intercambiando una pérdida de rendimiento /significativa/ a cambio de poder ver vagamente lo que está haciendo.


Linux
  1. 25 ejemplos simples del comando de búsqueda de Linux

  2. comando linux mv

  3. Linux du comando

  4. Comando IP de Linux

  5. Comando cd de linux

Comando Finger de Linux para encontrar detalles de usuario

Comando Df en Linux

Cómo encontrar la dirección IP en la línea de comandos de Linux

Buscar comando en Linux/UNIX

El comando find Directory de Linux:Explicación

Linux top -c para mostrar el comando completo