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" *.rb
pero lleva mucho tiempo y me gustaría usar pv (visor de tuberías) para mostrar una barra de progreso para poder monitorear el grep
progreso.
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
find
lugar dels
y*.rb
como sugiere thinice.fuente
No estoy seguro de qué sistema operativo está utilizando, pero es
grep -R "string" *.ext
posible que no funcione correctamente para usted.Puede ser mejor que lo use
find
junto congrep
:find . -type f -name "*.rb" -print0 |xargs --null grep "string"
fuente
En versiones recientes de
pv
hay 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
grep
se ejecuta, uselsof
junto 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
pv
estará operando en la salida del grep (por lo que incluso si especificó el tamaño de entrada completopv
solo 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>/fd
Esto 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