2012-10-12 9 views
22

Przeszukuję lokalny katalog svn. Kiedy uruchamiam grep -r "pattern" . mam pewne błędy, takie jakDlaczego rekursywny grep pokazuje błędy "Brak takiego pliku lub katalogu"?

grep: ./Data/test: Nie ma takiego pliku lub katalogu

który poprosił grep szukać plikach nieistniejących?


>grep --version 
grep (GNU grep) 2.10 

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

Co jest '/ data/test'? grep może wypluć ten typ błędu, gdy napotka dowiązanie symboliczne wskazujące nieistniejący plik. –

+0

@ j.w.r wygląda na to, że jest uszkodzonym dowiązaniem symbolicznym (zgodnie z poleceniem pliku). – user13107

+0

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

Odpowiedz

21

Domyślnie, grep nie ignorować nieistniejących lub nieczytelne pliki. Aby to zrobić, musisz podać opcję -s lub --no-messages. Cytując 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

Dzięki. Czym dokładnie są nieistniejące/nieczytelne pliki? – user13107

+3

Przykładem nieistniejącego byłoby uszkodzone dowiązanie symboliczne. Nieczytelne, jak sugeruje to słowo, odnosi się do plików, dla których bieżący użytkownik nie ma uprawnień do odczytu. – devnull

+0

grep nie czyta dla mnie plików '.sql' –