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 el error "no existe tal archivo o directorio".
No importa qué ruta defina o qué archivo busque, siempre aparece este error. Estoy bastante seguro de que estoy pasando por alto algo muy simple. ¿Alguien puede señalar qué 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 .
producción:https://gist.github.com/andrisp/f3adaf740548eead33da
[root@server htdocs]# find . -noleaf -name "index.php"
find: .: No such file or directory
Respuesta1
Según su strace
resultado, y no tengo idea del motivo, la open()
función prefija los nombres de archivo 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
Respuesta2
He visto que esto sucede en Mac cuando el directorio está en un medio extraíble que se eliminó y se volvió a agregar desde que se abrió la ventana de la terminal. No puedo explicar por qué (probablemente tenga que ver con la información almacenada en caché cuando se inició la sesión del terminal), pero fue reproducible. Simplemente reinicié la sesión del terminal y todo estuvo bien.
Respuesta3
Pruébelo 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é sucede si usted:
ls .
¿Tu caparazón sabe qué hacer con el punto?
Respuesta4
Es posible que no tenga permiso de ejecución para su usuario en el directorio desde el que está buscando. ¿Tiene permiso de lectura y ejecución?