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