ファインダーから「Permission Denied」プリントを削除するにはどうすればよいですか?

ファインダーから「Permission Denied」プリントを削除するにはどうすればよいですか?

パスワード

find / -name netcdf

出力

find: `/root/.dbus': Permission denied
find: `/root/.gconf': Permission denied
find: `/root/.gconfd': Permission denied
find: `/root/.gnome': Permission denied
find: `/root/.gnome2': Permission denied
find: `/root/.gnome2_private': Permission denied

答え1

これらのメッセージはstderrに送信され、通常、その出力ストリームにはこれらのメッセージのみが表示されます。コマンドラインからこの機能をオフまたはリダイレクトできます。

$ find / -name netcdf 2>&-

または

$ find / -name netcdf 2>/dev/null

また、ルートディレクトリ(/)を検索する場合は、通常、findがすべてのリソースを消費しないようにプロセスを最適化することをお勧めします。

$ nice find / -name netcdf 2>&-

これにより、プロセスの優先順位が下がり、他のプロセスでより多くのCPU時間が可能になります。もちろん、CPUを使用する他のものがなければ、何も実行されません。 :)技術的に言えば、NI値(グラフを参照ps -l)はPRI値を増加させます。 PRI値が低いほど優先順位が高くなります。ps -lそれと比較してみてくださいnice ps -l

答え2

@Gillesの答えを指摘したいです。find が権限に対して不平を言うルートを除外find;基本的に読み取れないディレクトリに落ちないようにする構成が含まれており、そういう意味でおそらく少し速いでしょう。

これは私にとって効果的なようです。

GNUfindまたは他のfindサポート-readableおよび-executable述部の場合:

find / -type d ! \( -readable -executable \) -prune -o -type f -name netcdf -print

またはこれ:

find / -type d ! -perm -g+r,u+r,o+r -prune -o -type f -name 'netcdf' -print

何らかの理由ですべて追加する必要がありますg+r,u+r,o+r(ショートカットはですa+r)。そうしないと、そのうちの1つが省略された場合、「権限の拒否」の状況が引き続き発生する可能性があります。

私がこれをどのように見るかについての分析は次のとおりです。-a(そして)演算子は次のようになります。find2つの述語の間に暗黙的):

find /         # find starting from path /
  -type d        # match type is directory
  ! -perm -a+r   # (and) match not permissions of `r`ead present 
  -prune         # ignore what matched above and do not descend into it
  -o             # or (whatever didn't match above)
  -type f        # match type is file
  -name 'netcdf' # (and) match name is 'netcdf'
  -print         # print what matched above

最後の項目がない場合は、いくつかの追加項目(非関連)-printが表示されます。一致する名前の項目のみを印刷します(存在する場合)。-name 'netcdf'-print

答え3

代わりに使用してくださいlocate(1)

$ locate netcdf

ユーザーが表示できるファイルのみが表示されます。

関連情報