これが私の最初の質問ですので、はっきりさせようと思います。
つまり、私はLinux端末でgrepコマンドを使用していて、「grep:」で始まるすべての行または「./」で始まる行なしで出力したいのですが、今はこのようなものを得る:
grep: ./users/blabla1: Permission denied
grep: ./users/blabla2: Permission denied
grep: ./users/blabla3: Permission denied
grep: ./users/blabla4: Permission denied
grep: ./users/blabla5: Permission denied
grep: ./users/blabla6: Permission denied
grep: ./users/blabla7: Permission denied
grep: ./users/blabla8: Permission denied
./foo/bar/log.log
./foo/bar/xml.xml
私はこれを試しました:
grep -irl "foo" . | grep -v "Permission denied"
私もこれを試しました:
grep -irl "foo" . | grep -v "^grep:"
そして最後にこれ:
grep -irl "foo" . | grep "^./"
ただし、|の後に何も付けなかった場合と同じ結果が得られますか?何が欠けていますか?
よろしくお願いします! :)
表示されているメッセージは、これらのファイルに対する権限の不足によるものです。つまり、これらはエラーメッセージです。
次のように、stderr
(標準エラー出力)を/dev/null
にリダイレクトするだけです。
grep -irl "foo" 2> /dev/null
(bashでの)リダイレクトの詳細については、次の記事を参照してください。 Bashリファレンスマニュアル-リダイレクト
Edit:次のコマンドを使用して、エラーメッセージを抑制することもできます。
grep -irl "foo" 2>&-