2012-10-12 321 views
22

Estoy agregando un directorio svn local. Cuando corro grep -r "pattern" . consigo algunos errores como¿Por qué grep recursivo muestra los errores 'No such file or directory'?

grep: ./Data/test: No existe el fichero o directorio

que pidió grep para buscar ficheros que no existen?


>grep --version 
grep (GNU grep) 2.10 

>lsb_release -a 
No LSB modules are available. 
Distributor ID: Ubuntu 
Description: Ubuntu 12.04 LTS 
+1

Lo que es '/ Datos/test'? grep puede escupir este tipo de error cuando encuentra un enlace simbólico que apunta a un archivo inexistente. –

+0

@ j.w.r parece que es un enlace simbólico roto (según el comando de archivo). – user13107

+0

Duplicado de http://stackoverflow.com/questions/6426363/how-can-i-have-grep-not-print-out-no-such-file-or-directory-errors – GlennG

Respuesta

21

Por defecto, grep no sería ignorar archivos inexistentes o ilegibles. Debe proporcionar la opción -s o --no-messages para hacerlo. Citando man grep:.

-s, --no-messages 
      Suppress error messages about nonexistent or unreadable files. 
      Portability note: unlike GNU grep, 7th Edition Unix grep did not 
      conform to POSIX, because it lacked -q and its -s option behaved 
      like GNU grep's -q option. USG-style grep also lacked -q but 
      its -s option behaved like GNU grep. Portable shell scripts 
      should avoid both -q and -s and should redirect standard and 
      error output to /dev/null instead. (-s is specified by POSIX.) 
+4

Gracias. ¿Qué son exactamente los archivos inexistentes/ilegibles? – user13107

+3

Un ejemplo de inexistente sería un enlace simbólico roto. No se puede leer, como la palabra sugiere, se refiere a los archivos para los cuales el usuario actual no tiene permisos de lectura. – devnull

+0

grep no está leyendo archivos '.sql' para mí –

Cuestiones relacionadas