Ubuntu grep, buscar, etc.: salida "Permiso denegado" y "No existe tal archivo o directorio"

Ubuntu grep, buscar, etc.: salida "Permiso denegado" y "No existe tal archivo o directorio"

Cuando uso grepo find, siempre me molestan los avisos de "Permiso denegado" y "No existe tal archivo o directorio", algo como esto:

johndoe@johndoe-desktop:/$ grep -rnP 'YII_CORE_PATH' ./ | grep -v .svn
grep: ./lib/ufw/user6.rules: Permission denied
grep: ./lib/ufw/user.rules: Permission denied
grep: ./lib/init/rw/udev/watch/27: No such file or directory
grep: ./lib/init/rw/udev/watch/26: No such file or directory
grep: ./lib/init/rw/udev/watch/25: No such file or directory

¿Cómo puedo evitarlos y hacer que solo vea datos relevantes, es decir, algo que realmente estoy buscando?

Respuesta1

con grep puedes especificar el indicador -s que hace más o menos lo que dijo @ortang

-s, --no-mensajes Suprime mensajes de error sobre archivos inexistentes o ilegibles. Nota de portabilidad: a diferencia de GNU grep, el grep de Unix de la séptima edición no se ajustaba a POSIX, porque carecía de -q y su opción -s se comportaba como la opción -q de GNU grep. El grep estilo USG también carecía de -q pero su opción -s se comportaba como el grep GNU. Los scripts de shell portátiles deben evitar tanto -q como -s y, en su lugar, deben redirigir la salida estándar y de error a /dev/null.

Con find, hasta donde yo sé, la respuesta de @ortangs es la mejor. algo como

find / -name "myfile" -type f -print 2>/dev/null

Respuesta2

Intente redirigir stderra /dev/null.

johndoe@johndoe-desktop:/$ grep -rnP 'YII_CORE_PATH' ./ 2> /dev/null | grep -v .svn

Respuesta3

Redirigiendo el strerra/dev/null(también conocido comoblack hole) es una buena forma de suprimir errores de permiso denegado.

Sin embargo, tenga en cuenta que esta herida no sólo suprime permission deniedmensajes sino queTODOerror de mensajes.

Si desea conservar otros mensajes de error, permission deniedpuede hacer algo como esto:

grep -rnP 'YII_CORE_PATH' ./ 2>&1 | grep -v 'permission denied' > error.log

Si no desea conservarlos, lo siguiente estaría bien:

grep -rnP 'YII_CORE_PATH' ./ 2> /dev/null | grep -v .svn

Respuesta4

Usar "|&" antes de grep -v lo solucionará, por ejemplo

grep -rnP 'YII_CORE_PATH' ./ | grep -v .svn |& grep -v 'permission denied'

información relacionada