Tengo un gran directorio en mi computadora y necesito buscar una cadena en cada archivo de ruby.
Podría haberlo hecho así: grep -R "string" *.rbpero lleva mucho tiempo y me gustaría usar pv (visor de tuberías) para mostrar una barra de progreso para poder monitorear el grepprogreso.
Pero realmente no sé cómo puedo escribir este comando porque todavía hay algunas cosas que no puedo entender sobre este comando.
¿Alguien tiene alguna idea?

Dos métodos más:
O, en un shell diferente mientras se ejecuta su comando original, busque el pid del comando grep y luego:
Ambos de los anteriores le mostrarán en qué archivo está trabajando actualmente el comando grep. Puede encontrar el número total de archivos con:
Por último, use esto para averiguar qué número está el archivo actual en la lista:
PD: Mis respuestas suponen que todos sus archivos están en un solo directorio. Si no lo están, deberá usarlo en
findlugar delsy*.rbcomo sugiere thinice.fuente
No estoy seguro de qué sistema operativo está utilizando, pero es
grep -R "string" *.extposible que no funcione correctamente para usted.Puede ser mejor que lo use
findjunto congrep:find . -type f -name "*.rb" -print0 |xargs --null grep "string"fuente
En versiones recientes de
pvhay una"-d"opción para ver todos los FD de otro proceso.Entonces, en teoría
pv, no solo funcionará como una tubería, sino también como un indicador de progreso para todo un proceso. (Por ejemplo, pruébelo con el PID de su Firefox)Para el problema anterior, una idea más simple es la siguiente: mientras
grepse ejecuta, uselsofjunto conwatch.De esa manera puedes monitorear el progreso de tu grep.
fuente
¿Ya lo intentaste?
No sé si realmente funciona porque no sabe cuántos bits de datos totales buscar porque es recursivo.
fuente
pvestará operando en la salida del grep (por lo que incluso si especificó el tamaño de entrada completopvsolo ve que la salida sale del final de la tubería, estaría muy por debajo -contar bytes.Usualmente uso el sistema de archivos proc en sistemas Linux, es decir
ls -al /proc/<pid of grep>/fdEsto enumera todos los archivos que la invocación grep ha abierto actualmente y, por lo tanto, da una idea de en qué parte de la búsqueda se encuentra actualmente.
fuente