2012-10-12 3 views
22

Sto greppando una directory svn locale. Quando eseguo grep -r "pattern" . ottengo alcuni errori, comePerché grep ricorsivo mostra errori "Nessun file o directory"?

grep: ./Data/test: No such file or directory

Chi ha chiesto grep per cercare i file inesistenti?


>grep --version 
grep (GNU grep) 2.10 

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

Ciò che è '/ dati/test'? grep può sputare questo tipo di errore quando incontra un collegamento simbolico che punta a un file inesistente. –

+0

@ j.w.r sembra un collegamento simbolico non funzionante (come per il comando file). – user13107

+0

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

risposta

21

Per impostazione predefinita, grep non sarebbe ignorare i file inesistenti o illeggibili. È necessario fornire l'opzione -s o --no-messages per farlo. Citando da 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

Grazie. Cosa sono esattamente i file inesistenti/illeggibili? – user13107

+3

Un esempio di inesistente sarebbe un collegamento simbolico non funzionante. Illeggibile, come suggerisce la parola, si riferisce ai file per i quali l'utente corrente non ha permessi di lettura. – devnull

+0

grep non sta leggendo i file '.sql' per me –