Почему рекурсивный grep показывает ошибки «Нет такого файла или каталога»?

Я ищу локальный каталог svn. Когда я запускаю grep -r "pattern" ., я получаю некоторые ошибки, такие как

grep: ./Data/test: нет такого файла или каталога

Кто просил grep искать несуществующие файлы?


>grep --version
grep (GNU grep) 2.10

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

person user13107    schedule 12.10.2012    source источник
comment
Что такое ./Data/test? grep может выдавать ошибку такого типа, когда встречает символическую ссылку, указывающую на несуществующий файл.   -  person j.w.r    schedule 12.10.2012
comment
@ j.w.r похоже, что это неработающая символическая ссылка (согласно команде файла).   -  person user13107    schedule 12.10.2012
comment
Дубликат stackoverflow.com/questions/6426363/   -  person GlennG    schedule 25.01.2017


Ответы (1)


По умолчанию grep не будет игнорировать несуществующие или нечитаемые файлы. Для этого вам необходимо указать опцию -s или --no-messages. Цитата из 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.)
person devnull    schedule 30.04.2013
comment
Примером несуществующего может быть неработающая символическая ссылка. Нечитаемый, как следует из названия, относится к файлам, для которых текущий пользователь не имеет прав на чтение. - person devnull; 01.05.2013
comment
Кажется, это единственное решение, когда grep не работает с 2>/dev/null - person DimiDak; 29.06.2021