Ubuntu grep, find etc: "Permission denied" and "No such file or directory" output
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
Solution 3
Redirecting the strerr
to /dev/null
(a.k.a black hole
) is a good way of suppressing permission denied errors.
However, do note that this wound not only suppress permission denied
messages but ALL error messages.
If you do wish to retain error messages other than permission denied
then you can do something like this -
grep -rnP 'YII_CORE_PATH' ./ 2>&1 | grep -v 'permission denied' > error.log
If you don't wish to retain those then the following would be just fine -
grep -rnP 'YII_CORE_PATH' ./ 2> /dev/null | grep -v .svn
Solution 4
johndoe@johndoe-desktop:/$ sudo grep -rnP 'YII_CORE_PATH' ./ | grep -v .svn
Use the sudo
command to elevate the command to have administrative privileges.
Related videos on Youtube
Comments
-
Vadim Samokhin over 1 year
When I use
grep
orfind
, 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?
-
Admin almost 8 yearsRelated: stackoverflow.com/a/25234419/54964
-
-
choroba over 12 yearsYou cannot grep something that has been already redirected to /dev/null.
-
jaypal singh over 12 years@choroba Have corrected the answer. Meant to write
2>&1
instead of2> /dev/null
for first suggestion. -
ortang over 12 yearsYes, you have to redirect
stderr
tostout
first.