web-dev-qa-db-ja.com

find-commandを使用するときに、スパムによって拒否された権限を回避する

私はよく次の構文でファイルを見つけようとします:

find . -name "filetofind"

ただし、通常は、アクセス許可が拒否されたフォルダーに関する行数またはエラーレポート(アクセス許可が拒否されました)になります。エラー出力からSudoまたは高度なgreppingを使用する以外にこのスパムを回避する方法はありますか?

21
user40167

試す

find . -name "filetofind" 2>/dev/null

これはstderr出力ストリームをリダイレクトし、「アクセス拒否」エラーを含むすべてのエラーをnullデバイスに報告するために使用されます。

27
whitequark

-perm述語と-Prune述語を使用して、読み取り不可能なディレクトリに移動しないようにすることもできます(「 」も参照)検索プログラムから「許可が拒否された」印刷出力ステートメントを削除するには-UnixおよびLinuxスタック交換 ):

find . -type d ! -perm -g+r,u+r,o+r -Prune -o -name "filetofind" -print
9
sdaau

他のエラーを表示したいが、「許可が拒否されました」という名前のファイルがない場合は、これは「より適切に」機能します。

find . -name "filetofind" 2>&1 | grep -v 'permission denied' 

反転オプションを使用して出力をgrepにリダイレクトします。

3
Hogan