web-dev-qa-db-fra.com

Faire sortir les lignes "Accès refusé"

Lorsque j'utilise find pour afficher tous les fichiers pdf du répertoire /home, je vois access denied. Pour les éliminer, j'ai essayé:

find /home -iname "*.pdf" | grep -v "access denied"

Cependant, le résultat est le même. Comment puis-je me débarrasser de ces lignes?

9
solfish

Ce que vous avez essayé n'a pas fonctionné, car la sortie access denied sont des erreurs et sont envoyées sur STDERR au lieu de STDOUT, qui est acheminé vers grep.

Vous pouvez éviter de voir ces erreurs en redirigeant uniquement STDERR

find /home -iname "*.pdf" 2>/dev/null

Ou comme David Foerster a commenté nous pouvons plus succinctement fermer STDERR

find /home -iname "*.pdf" 2>&-

Cependant, je soupçonne que vous ne voulez en fait que chercher dans votre maison plutôt que chez d'autres utilisateurs, alors vous voulez peut-être vraiment

find ~ -iname "*.pdf"

Si cela génère des erreurs, il peut y avoir des erreurs de propriété dans votre configuration locale, sur lesquelles vous devriez enquêter.

19
Zanna

L'accès refusé est probablement en cours d'impression sur stderrplutôt que stdoutname__.

Essaye ça:

find /home -iname "*.pdf" 2>&1 | grep -v "access denied"

Le 2>&1 redirige la sortie de stderrvers stdoutname__, afin que grep -v puisse faire son travail. (Par défaut, | ne canalise que stdoutet non stderrname__.)

8
Android Dev