«find: .: Такого файла или каталога нет» при использовании find в текущем каталоге

«find: .: Такого файла или каталога нет» при использовании find в текущем каталоге

Команда 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

решение1

Согласно вашим 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

решение2

Я видел, как это происходило на Mac, когда каталог находился на съемном носителе, который был извлечен и переписан после открытия окна терминала. Я не могу объяснить, почему (вероятно, это связано с информацией, кэшированной при запуске сеанса терминала), но это было воспроизводимо. Просто перезапустил сеанс терминала, и все было в порядке.

решение3

Попробуйте указать абсолютный путь, например:

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

И как уже упоминалось выше, возможно, у вас нет разрешений. Что произойдет, если вы:

ls . 

Знает ли ваша оболочка, что делать с точкой?

решение4

Возможно, у вас нет разрешения на выполнение для вашего пользователя в каталоге, в котором вы ищете. Имеет ли он разрешение на чтение и выполнение?

Связанный контент