web-dev-qa-db-ja.com

Ubuntu grep、find etc:「Permission denied」および「No such file or directory」出力

grepまたはfindを使用すると、「Permission denied」および「No such file or directory」という通知に常に煩わされます。たとえば、次のようになります。

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

それらをどのように回避して、関連データ、つまり私が本当に探しているものだけを表示できるようにすることができますか?

grepを使用すると、@ ortangが言ったことをほぼ行う-sフラグを指定できます

-s、--no-messages存在しない、または読み取り不可能なファイルに関するエラーメッセージを抑制します。移植性に関する注意:GNU grepとは異なり、第7版Unix grepはPOSIXに準拠していませんでした。-qがなく、-sオプションがGNU grep's- qオプション。USGスタイルのgrepにも-qがありませんでしたが、-sオプションはGNU grepのように動作しました。ポータブルシェルスクリプトは-qと-sの両方を回避し、標準出力とエラー出力を/にリダイレクトする必要があります。代わりにdev/null。

私が知る限り、@ ortangsでの検索が最善です。何かのようなもの

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

25
matchew

strerr/dev/null(a.k.a black hole)にリダイレクトすることは、権限拒否エラーを抑制する良い方法です。

ただし、この傷はpermission deniedメッセージだけでなく[〜#〜] all [〜#〜]エラーメッセージも抑制することに注意してください。

permission denied以外のエラーメッセージを保持したい場合は、次のようなことができます-

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

それらを保持したくない場合は、以下で問題ありません-

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

Sudoコマンドを使用して、コマンドを昇格させ、管理者特権を付与します。

3
Nurlan

Grep -vの前に「|&」を使用すると、それが処理されます。

grep -rnP 'YII_CORE_PATH' ./ | grep -v .svn |& grep -v 'permission denied'
0
Fluffball