web-dev-qa-db-ja.com

Linuxでfindを実行しているときに「許可が拒否されました」エラーをスキップする方法

重複の可能性:
「許可が拒否されました」印刷出力ステートメントを検索プログラムから削除するにはどうすればよいですか?

Linux(SuSE)でこのコマンドを実行すると:

find / -name ant

次の形式の多くのエラーメッセージが表示されます。

find: `/etc/cups/ssl': Permission denied

findは、これらのエラーの表示をスキップする引数を取って、アクセス権のあるファイルのみを試しますか?

146
user710818

stderrへのメッセージを除外できます。このようにstdoutにリダイレクトすることを好みます。

 find / -name art  2>&1 | grep -v "Permission denied"

説明

つまり、すべての通常の出力は標準出力(stdout)に送られます。標準エラーへのすべてのエラーメッセージ(stderr)。

grepは通常、指定された文字列を検索/印刷し、-vはこれを反転します。そのため、しないに「Permission denied」が含まれるすべての文字列を検索/印刷します。通常stderr(ファイル記述子2)に送信されるエラーメッセージを含む、findコマンドからのすべての出力はstdout(ファイル記述子1)に移動し、grepコマンド。

これは、bash/shシェルを使用していることを前提としています。

tcsh/cshの下で使用します

 find / -name art |& grep ....
191
Levon