Ubuntu grep, find etc: "Permission denied" and "No such file or directory" output

When I use grep or find, I always get annoyed by the "Permission denied" and "No such file or directory" notices, something like this:

johndoe@johndoe-desktop:/$ grep -rnP 'YII_CORE_PATH' ./ | grep -v .svn
grep: ./lib/ufw/user6.rules: Permission denied
grep: ./lib/ufw/user.rules: Permission denied
grep: ./lib/init/rw/udev/watch/27: No such file or directory
grep: ./lib/init/rw/udev/watch/26: No such file or directory
grep: ./lib/init/rw/udev/watch/25: No such file or directory

How can I avoid them and make it so I only see relevant data, i.e. something that I'm really looking for?


Solution 1:

with grep you could specifiy the -s flag which does pretty much what @ortang said

-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.

with find as far as I know @ortangs answer is the best. something like

find / -name "myfile" -type f -print 2>/dev/null

Solution 2:

Try redirecting stderr to /dev/null.

johndoe@johndoe-desktop:/$ grep -rnP 'YII_CORE_PATH' ./ 2> /dev/null | grep -v .svn