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
ls -la|grep "index.php"
dicefind .
tampoco funciona? ¿Qué hay dels -al
?find .
encuentre la.
entrada y luego se queje de que no existe es curioso. Aparentemente este es un errorfind
, ¿ con qué versión estás usando?strace find .
algún lugar?Respuestas:
Según su
strace
resultado, y no tengo idea de la razón, losopen()
nombres de archivo de prefijo de función con/proc/
:fuente
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?
fuente
Pruébalo con la ruta absoluta como:
Y como ya se mencionó anteriormente, es posible que no tenga permisos. ¿Qué pasa si usted:
¿Tu caparazón sabe qué hacer con el punto?
fuente
Puedes usar
La mejor manera de buscar un archivo o carpeta es:
updatedb
(para actualizar el índice del archivo del sistema).locate Myfile
fuente
updatedb
ylocate
requerir que se instale un paquete que proporciona ambos (por ejemplo,mlocate
).Estoy usando Red Hat Enterprise Linux Server versión 6.4 (Santiago). Puede asegurarse de que está utilizando la búsqueda correcta
/usr/bin
o/bin
para asegurarse de que el comando de búsqueda esté allí. Si ni siquiera puede hacer unman
encendidofind
, intente cambiar su shell a cualquiera/bin/ksh
o/bin/bash
. He descubierto que las variables de entorno y las rutas pueden confundirse de vez en cuando.fuente
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
\find
también evitará que se usen alias. También puede usaralias
para ver los alias de comando en su sesión de shell actual.fuente
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.
fuente