web-dev-qa-db-fra.com

Ubuntu Grep, Trouvez, etc.: "Autorisation refusée" et "Aucun fichier ou répertoire de ce type"

Lorsque j'utilise grep ou find, je suis toujours ennuyé par la "permission refusée" et "aucun fichier de type ou répertoire", quelque chose comme ça:

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

Comment puis-je les éviter et le faire, donc je ne vois que des données pertinentes, c'est-à-dire quelque chose que je cherche vraiment?

18

avec grep, vous pourriez spécifier le drapeau -s qui fait à peu près ce que @tortang a dit

- S, --NO-Messages Supprimer des messages d'erreur sur des fichiers inexistants ou illisibles. Note de portabilité: Contrairement à GNU Grep, la 7ème édition Unix Grep n'a pas confié à POSIX, car elle manquait -q et son option de SS -S s'est comportée comme GNU Grep - q Option. Le grep de style USG est également manqué de -q mais son option -s est comporté comme GNU grep. Les scripts de shell portable doivent éviter les deux -q and -s et doivent rediriger la standard et la sortie d'erreur vers/dev/null à la place.

avec la recherche aussi loin que je sais @ortangs, la réponse est la meilleure. quelque chose comme

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

25
matchew

Essayez de rediriger stderr à /dev/null.

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

Redirecter le strerr à /dev/null (A.k.a black hole) est un bon moyen de supprimer la permission de refuser des erreurs.

Cependant, notez que cette blessure supprime non seulement permission denied messages mais [~ # ~] tous [~ # ~ ~] Messages d'erreur.

Si vous souhaitez conserver des messages d'erreur autres que permission denied alors vous pouvez faire quelque chose comme ça -

grep -rnP 'YII_CORE_PATH' ./ 2>&1 | grep -v 'permission denied' > error.log

Si vous ne souhaitez pas conserver ceux-ci, les suivants seraient tout simplement bien -

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

Utilisez la commande Sudo pour élever la commande pour avoir des privilèges administratifs.

3
Nurlan