web-dev-qa-db-ja.com

「アクセス拒否」行の取り出し

findを使用して/homeディレクトリ内のすべてのpdfファイルを表示すると、access deniedが表示されます。それらを排除するために、私は試しました:

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

ただし、結果は同じです。これらの行を削除するにはどうすればよいですか?

9
solfish

access denied出力はエラーであり、grepにパイプされるSTDOUTの代わりにSTDERRで送信されるため、試したものは機能しませんでした。

STDERRのみをリダイレクトすることで、これらのエラーが表示されないようにすることができます

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

または David Foersterがコメントした より簡潔にできるcloseSTDERR

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

ただし、実際に検索するのは他のユーザーではなく自宅だけだと思う​​ので、おそらくあなたは本当に

find ~ -iname "*.pdf"

それがエラーをスローする場合、ローカル設定に間違った所有権がある可能性がありますので、調査する必要があります。

19
Zanna

拒否されたアクセスは、おそらくstderrではなくstdoutに印刷されています。

これを試して:

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

2>&1は、grep -vがジョブを実行できるように、出力をstderrからstdoutにリダイレクトします。 (デフォルトでは、|stdoutではなくstderrのみをパイプします。)

8
Android Dev