git - tipos - ¿Cómo puedo hacer que grep no imprima los errores ''No hay tal archivo o directorio''?
qué tipos de etiquetas existen en git (7)
Estoy revisando un gran montón de código administrado por git, y cada vez que hago un grep, veo montones y montones de mensajes de la forma:
> grep pattern * -R -n
whatever/.git/svn: No such file or directory
¿Hay alguna forma en que pueda hacer que esas líneas desaparezcan?
¿Has probado la opción -0
en xargs ? Algo como esto:
ls -r1 | xargs -0 grep ''some text''
He visto eso sucediendo varias veces, con enlaces rotos (enlaces simbólicos que apuntan a archivos que no existen), grep intenta buscar en el archivo de destino, que no existe (de ahí el mensaje de error correcto y preciso).
Normalmente no me molesto cuando hago tareas de administrador de sistema en la consola, pero desde los scripts busco archivos de texto con "buscar" y luego grep cada uno:
find /etc -type f -exec grep -nHi -e "widehat" {} /;
En lugar de:
grep -nRHi -e "widehat" /etc
Los errores de este tipo generalmente se envían al flujo de "error estándar", que puede canalizar a un archivo o simplemente hacer desaparecer en la mayoría de los comandos:
grep pattern * -R -n 2>/dev/null
Normalmente no dejo que grep haga la recursividad en sí. Por lo general, hay algunos directorios que desea omitir (.git, .svn ...)
Puedes hacer alias inteligentes con posturas como esa:
find . /( -name .svn -o -name .git /) -prune -o -type f -exec grep -Hn pattern {} /;
Puede parecer excesivo a primera vista, pero cuando necesita filtrar algunos patrones es bastante útil.
Puede usar el indicador -s
o --no-messages
para suprimir los errores.
-s, --no-messages suprimen mensajes de error
grep pattern * -s -R -n
Si buscas en un repositorio de git, te recomendaría que uses git grep
. No necesita pasar en -R
o la ruta.
git grep pattern
Eso mostrará todas las coincidencias de su directorio actual hacia abajo.
Use -I
en grep.
Ejemplo: grep SEARCH_ME -Irs ~/logs
.