J'ai un énorme répertoire sur mon ordinateur et je dois rechercher dans chaque fichier ruby à l'intérieur une chaîne.
J'aurais pu le faire comme ceci: grep -R "string" *.rb
mais cela prend très longtemps et j'aimerais utiliser pv (pipe viewer) pour afficher une barre de progression pour pouvoir suivre les grep
progrès.
Mais je ne sais pas vraiment comment puis-je écrire cette commande car il y a encore des choses que je ne peux pas comprendre à propos de cette commande.
Quelqu'un a-t-il une idée?
Deux autres méthodes:
Ou, dans un autre shell pendant l'exécution de votre commande d'origine, recherchez le pid de la commande grep, puis:
Les deux ci-dessus vous montreront sur quel fichier la commande grep travaille actuellement. Vous pouvez trouver le nombre total de fichiers avec:
Enfin, utilisez-le pour déterminer le numéro du fichier actuel dans la liste:
PS Mes réponses supposent que tous vos fichiers sont dans un seul répertoire. Si ce n'est pas le cas, vous devrez utiliser à la
find
placels
et*.rb
comme suggéré.la source
Je ne sais pas quel système d'exploitation vous utilisez, mais
grep -R "string" *.ext
peut ne pas fonctionner correctement pour vous.Vous pourriez être mieux servi en utilisant
find
conjointement avecgrep
:find . -type f -name "*.rb" -print0 |xargs --null grep "string"
la source
Dans les versions récentes de
pv
il y a une"-d"
option pour regarder tous les FD d'un autre processus.Donc, en théorie,
pv
cela ne fonctionnera pas seulement comme un tuyau, mais aussi comme un indicateur de progrès pour tout un processus. (Par exemple, essayez-le avec le PID de votre Firefox)Pour le problème ci-dessus, une idée plus simple est la suivante: pendant que le
grep
est en cours d'exécution, utilisez-lelsof
avecwatch
.De cette façon, vous pouvez suivre la progression de votre grep.
la source
As-tu déjà essayé
Je ne sais pas si cela fonctionne réellement car il ne sait pas combien de bits de données totales rechercher car il est récursif?
la source
pv
fonctionnera sur la sortie du grep (même s'il a précisé la taille d'entrée complètepv
ne voit que la sortie en sortant la fin du tuyau - Il serait ainsi sous -counting bytes.J'utilise généralement le système de fichiers proc sur les systèmes Linux, c'est-à-dire
ls -al /proc/<pid of grep>/fd
Ceci répertorie tous les fichiers que l'invocation grep a ouverts actuellement et donne ainsi une idée de l'endroit où se trouve actuellement la recherche.
la source