"Find:.: No existe dicho archivo o directorio" mientras se usa find en el directorio actual

8

El comando Buscar parece no funcionar en absoluto. Por ejemplo, estoy en un directorio donde absolutamente hay un archivo llamado index.php y ejecuto esto:

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

Siempre recibo esto, no hay tal archivo o error de directorio.

No importa qué ruta defina o qué archivo busco, siempre obtengo este error. Estoy bastante seguro de que estoy pasando por alto algo muy simple. ¿Alguien puede señalar lo que estoy haciendo mal?

[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 .salida: https://gist.github.com/andrisp/f3adaf740548eead33da

[root@server htdocs]# find . -noleaf -name "index.php"
find: .: No such file or directory
andris
fuente
Que ls -la|grep "index.php"dice
user80551
find .tampoco funciona? ¿Qué hay de ls -al?
Braiam
1
El hecho de que find .encuentre la .entrada y luego se queje de que no existe es curioso. Aparentemente este es un error find, ¿ con qué versión estás usando?
Graeme
2
¿Puedes publicar la salida de strace find .algún lugar?
Stéphane Chazelas
1
@mikeserv es ext3, pero he habilitado ACL en él sin saber realmente lo que estoy haciendo :), por lo que probablemente sea la razón. Intentará deshabilitarlo y ver qué pasa
andris

Respuestas:

1

Según su straceresultado, y no tengo idea de la razón, los open()nombres de archivo de prefijo de función con /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
Sébastien
fuente
0

Es posible que no tenga permiso de ejecución para su usuario para el directorio desde el que está buscando. ¿Tiene permiso de lectura y ejecución?

vadimbog
fuente
0

Pruébalo con la ruta absoluta como:

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

Y como ya se mencionó anteriormente, es posible que no tenga permisos. ¿Qué pasa si usted:

ls . 

¿Tu caparazón sabe qué hacer con el punto?

AME
fuente
0

Puedes usar

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

La mejor manera de buscar un archivo o carpeta es:

  • updatedb (para actualizar el índice del archivo del sistema).

  • locate Myfile

Rahul V Sharma
fuente
Tenga en cuenta que usar updatedby locaterequerir que se instale un paquete que proporciona ambos (por ejemplo, mlocate).
HalosGhost
0

Estoy usando Red Hat Enterprise Linux Server versión 6.4 (Santiago). Puede asegurarse de que está utilizando la búsqueda correcta /usr/bino /binpara asegurarse de que el comando de búsqueda esté allí. Si ni siquiera puede hacer un manencendido find, intente cambiar su shell a cualquiera /bin/ksho /bin/bash. He descubierto que las variables de entorno y las rutas pueden confundirse de vez en cuando.

usuario83872
fuente
0

Como otros han mencionado, puede ser útil usar la ruta completa para encontrar el binario. Es posible que find tenga un alias con banderas adicionales en su sistema. Escribir \findtambién evitará que se usen alias. También puede usar aliaspara ver los alias de comando en su sesión de shell actual.

robble
fuente
0

He visto que esto sucede en Mac cuando el directorio está en un medio extraíble que se ha eliminado y leído desde que se abrió la ventana del terminal. No puedo explicar por qué (probablemente tiene que ver con la información almacenada en caché cuando se inició la sesión de terminal), pero era reproducible. Simplemente reinicié la sesión de terminal y todo estuvo bien.

usuario3781694
fuente