現在のディレクトリで検索を使用しているときに「find:。:No such file or directory」


9

Findコマンドがまったく機能しないようです。たとえば、私は絶対にindex.phpという名前のファイルがあるディレクトリにいて、これを実行します:

[root@server htdocs]# find . -name "index.php"
find: .: No such file or directory

私は常にそのようなファイルやディレクトリのエラーは発生しません。

定義するパスや検索するファイルに関係なく、常にこのエラーが発生します。私は非常に単純なものを見落としていると確信しています。誰かが私が間違っていることを指摘できますか?

[root@server htdocs]# pwd
/srv/www/htdocs
[root@server htdocs]# type -a find
find is /usr/bin/find
[root@server htdocs]# ls -la | grep index.php
-rw-rw-r--  1 andris users  413 Sep  1  2013 index.php
[root@server htdocs]# find . -name "index.php"
find: .: No such file or directory
[root@server htdocs]# find .
.
find: .: No such file or directory

[root@server htdocs]# stat .
  File: `.'
  Size: 4096            Blocks: 8          IO Block: 4096   directory
Device: ca00h/51712d    Inode: 155686      Links: 12
Access: (0775/drwxrwxr-x)  Uid: (  504/  andris)   Gid: (  100/   users)
Access: 2014-06-17 19:37:22.000000000 +0000
Modify: 2014-06-08 21:06:16.000000000 +0000
Change: 2014-06-08 21:06:16.000000000 +0000

[root@server htdocs]# find --version
GNU find version 4.2.27
Features enabled: D_TYPE O_NOFOLLOW(enabled) LEAF_OPTIMISATION SELINUX

strace find .出力:https : //gist.github.com/andrisp/f3adaf740548eead33da

[root@server htdocs]# find . -noleaf -name "index.php"
find: .: No such file or directory

何てls -la|grep "index.php"言うの?
user80551

find .どちらも機能しませんか?どうls -alですか?
Braiam

1
実際にfind .見つかった.エントリが、その後、それは好奇心旺盛で存在していないと文句を言い。これはのバグのようですがfind、どのバージョンを使用していますか?
Graeme

2
strace find .どこかの出力を投稿できますか?
ステファンChazelas

1
@mikeservそれはext3ですが、私が何をしているのか本当にわからずにACLを有効にしています:)そのため、それがおそらく理由です。それを無効にして何が起こるかを見ようとします
andris

回答:


2

あなたのstrace出力によると、理由はわかりませんが、open()関数の接頭辞ファイル名は/proc/

open(".", O_RDONLY|O_NONBLOCK|O_LARGEFILE|O_DIRECTORY) = 4
fcntl64(4, F_SETFD, FD_CLOEXEC) = 0
getdents64(4, /* 21 entries */, 32768) = 664
getgid32() = 0
stat64("/proc/index.php", 0xbfc53bd0) = -1 ENOENT (No such file or directory)
getgid32() = 0
stat64("/proc/.svn", 0xbfc53bd0) = -1 ENOENT (No such file or directory)
getgid32() = 0
stat64("/proc/init-dist.php", 0xbfc53bd0) = -1 ENOENT (No such file or directory)
getgid32() = 0
stat64("/proc/landing-page.html", 0xbfc53bd0) = -1 ENOENT (No such file or directory)
getgid32() = 0
[...]
stat64("/proc/js", 0xbfc53bd0) = -1 ENOENT (No such file or directory)
getgid32() = 0
stat64("/proc/extras", 0xbfc53bd0) = -1 ENOENT (No such file or directory)
getgid32() = 0
stat64("/proc/sitemaps", 0xbfc53bd0) = -1 ENOENT (No such file or directory)
getdents64(4, /* 0 entries */, 32768) = 0

0

検索するディレクトリに対するユーザーの実行権限がない可能性があります。読み取りと実行の権限はありますか?


0

次のような絶対パスで試してください:

   sudo find /where/your_file_is/located/ -iname "index.php"

そして、すでに上で述べたように、あなたには権限がないかもしれません。次の場合はどうなりますか:

ls . 

あなたのシェルはドットをどうするか知っていますか?


0

使用できます

$ find ~/ -type f -name "MYFILE"

ファイルまたはフォルダを検索する最良の方法は次のとおりです。

  • updatedb (システムファイルインデックスの更新用)。

  • locate Myfile


使用していることに注意してくださいupdatedblocateの両方を提供するパッケージをインストールすることを必要とする(例えば、mlocate)。
HalosGhost 14

0

Red Hat Enterprise Linux Serverリリース6.4(サンティアゴ)を使用しています。あなたは、あなたがいずれかの右の検索を使用している作ることができる/usr/binか、/binfindコマンドがあることを確認します。manon も実行できない場合は、findシェルを/bin/kshまたはに変更してみてください/bin/bash。環境変数とパスがたまに混乱することがあります。


0

他の人が述べたように、バイナリの検索へのフルパスを使用すると役立つ場合があります。システムで、追加のフラグでエイリアスが検索される可能性があります。入力\findすると、エイリアスも使用できなくなります。を使用aliasして、現在のシェルセッションのコマンドエイリアスを表示することもできます。


0

ターミナルウィンドウが開いてから削除されて再読み込みされたリムーバブルメディアにディレクトリがある場合に、Macでこれが発生するのを確認しました。理由は説明できません(おそらく、ターミナルセッションが開始されたときにキャッシュされた情報に関係しています)が、再現可能でした。ターミナルセッションを再起動しただけで、問題はありませんでした。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.