find
アクセス権のないディレクトリにアクセスしようとしたときに表示されるエラーメッセージを抑制するオプションはありますか?
私はstderrを削除できることを知っていますが、ドキュメントにオプションが見つかりませんでしたが、これを行うオプションが存在しないと信じるほど明らかな必要性のようです。
答え1
到着避ける許可エラーが発生した場合は、find
これらのエラーが発生しないようにしてください。アクセスできないディレクトリを入力しないことでこれを行うことができます。
find
現在、ユーザーが読み取ることはできませんがGNUスタイルに深く入らないディレクトリのパス名を見つけて表示します。
find / -type d ! -readable -prune
これ-prune
により、検索パスから現在調査中のパス名が削除されますfind
。
標準では、find
複雑な方法を組み合わせて、ディレクトリ所有権に基づいて各ディレクトリの権限をテストする必要があります。何度試してみたようですが難しいですね。-perm
-user
-group
「その他」権限ビットのみを考慮してください。
find / -type d ! -user "$(id -u)" ! -group "$(id -g)" ! -perm -005 -prune
現在のユーザーに属しておらず、現在のユーザーのグループに属しておらず、「他人」が読んだり(表示したり)実行(入力)したりすることを許可しない権限を持つディレクトリを見つけて、そのディレクトリを削除します。検索パスから。
すべての許可ビットをテストする完全なものは次のとおりです。
find / -type d \( \( -user "$(id -u)" ! -perm -500 \) -o \
\( ! -user "$(id -u)" -group "$(id -g)" ! -perm -050 \) -o \
\( ! -user "$(id -u)" ! -group "$(id -g)" ! -perm -005 \) \) -prune
-readable
これは、ACLなども考慮されるfind
点でGNUとは異なります。-readable
到着捨てるの許可エラーはfind
標準エラーストリームにリダイレクトします/dev/null
。
答え2
エラーメッセージを表示しないオプションがあるコマンドはほとんど見つかりません。捨てることが些細なものだからだ。標準エラーと同じ構造を使用してください2>/dev/null
。
特にfind
そのようなオプション自体はありません。