>$ updatedb --prunepaths='/cygdrive /usr /var /sbin /home >/etc'
>$ updatedb --prunepaths='/cygdrive /usr /var /sbin /home >/etc /bin'
>$ updatedb --prunepaths='/cygdrive /usr /var /sbin /home >/etc /lib'
>/usr/bin/find: ./.. changed during execution of >/usr/bin/find (全て同じ結果)
>となりました。
つまり。検索パスに/bin、/libがあると、findはエラーを
出す、ということです。
>$ find /* -name cygwin.bat
>/cygwin.bat
>等とすると大丈夫ですが(略)
や、
>$ for d in /*; do if [ -d $d ]; then echo $d; find $d >-name cygwin.bat; fi; done
>(な さんの指示、エラーが出なかった)
> for d in `ls -A /`; do echo "=== $d"; find /$d -print
> >/tmp/find-$d; done
>(nill さんの指示、エラーが出なかった)
のような他のやり方でためした結果とあわせると、findは"/bin"や、"/lib"から"/"にもどろうとしたときに、正しく"/"にもどれないのだと思います。
(何故だろう…?)
>また、両方を加えた場合と、前回ヘンなメッセージが出た場合を試すと、
>…
>は前回と同じ(通ります)。
/usr/var/locatedb.n
が無くなり、書きこみが正常にできた、ということです。
--prunepathsに"/"そのものを入れているので、updatedbは
多分なにもしてないでしょうから(どこも見に行かない)、
エラーもでない、と。
>$ updatedb --prunepaths='/cygdrive /lib /bin'
>$ updatedb --prunepaths='/cygdrive/c /lib /bin'
>$ updatedb --prunepaths='/cygdrive/e/cygwin /bin /lib'
>は10分以上待って返って来ず、Ctr + c して抜けました。
おそらく時間がかかっているだけでしょう。
(もっともこのまま続けると、どこかでまたエラーがでるかもしれませんが)。
>またfindの動作でおかしな事に気付きました。今更ながらですみません。
>/ にて、
>…
>$ find . -name cygwin*
>find: paths must precede expression
>Usage: find [path...] [expression]
>
>$ find / -name cygwin*
>find: paths must precede expression
>Usage: find [path...] [expression]
>となります。
$ find / -name 'cygwin*'
という風に、シングルクウォートして下さい。
そうしないと、findに渡される前にbashが * を解釈してしまいます。
/bin や/libでfind がエラーを発生する理由は私には
今のところ何も思いつきません、ごめんなさい。
ただ、/etc/passwd /etc/group の件と関係あるかもしれなせん。
|