パスワード
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
;基本的に読み取れないディレクトリに落ちないようにする構成が含まれており、そういう意味でおそらく少し速いでしょう。
これは私にとって効果的なようです。
GNU
find
または他の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
(そして)演算子は次のようになります。find
2つの述語の間に暗黙的):
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
ユーザーが表示できるファイルのみが表示されます。