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 ellsof
completo salida-a
=decirle alsof
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 llamadofind
(en realidad, proceso cuyo nombre comienza confind
, pero distingue entre mayúsculas y minúsculas, por lo queFinder
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.