con grep podrías especificar el indicador -s que hace más o menos lo que dijo @ortang
-s, --sin-mensajes Suprima los mensajes de error sobre archivos inexistentes o ilegibles. Nota de portabilidad:a diferencia de GNU grep, la séptima edición de Unix grep 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 al estilo USG también carecía de -q pero su opción -s se comportaba como GNU grep. Los shellscripts portátiles deben evitar tanto -q como -s y deben redirigir la salida estándar y de error a /dev/null en su lugar.
con find, hasta donde yo sé, la respuesta de @ortangs es la mejor. Algo como
find / -name "myfile" -type f -print 2>/dev/null
Intenta redirigir stderr
a /dev/null
.
[email protected]:/$ grep -rnP 'YII_CORE_PATH' ./ 2> /dev/null | grep -v .svn
Redirigir el strerr
a /dev/null
(también conocido como black hole
) es una buena manera de suprimir los errores de permiso denegado.
Sin embargo, ten en cuenta que esta herida no solo suprime permission denied
mensajes pero TODOS error de mensajes.
Si desea conservar los mensajes de error que no sean permission denied
entonces puedes 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