¿Cómo encontrar un directorio en Linux?


454

Tengo un VPS con Suse Linux 10.3 .

He iniciado sesión a través de SSH / putty y estoy tratando de encontrar dónde están ubicados mis archivos web.

Como estoy cargando a través de FTP en un directorio llamado httpdocs , supongo que este directorio existe en algún lugar.

Mis búsquedas en Google me han enseñado a hacer esto, ir a mi directorio raíz y escribir:

find httpdocs -type d

pero dice " No existe tal archivo o directorio ".

¿Cómo puedo encontrar este directorio?


44
En caso de que alguien se pregunte, el comando en la pregunta encuentra todos los directorios ( -type d) en la entrada del directorio httpdocs(en relación con el directorio de trabajo actual, generalmente pero no necesariamente un directorio). Falla con el mensaje de error porque no hay entrada de directorio httpdocsen el directorio raíz del sistema y, por lo tanto, no hay punto de partida para una búsqueda.
Daniel Beck

Respuestas:


610

Está:

find / -type d -name 'httpdocs'

el primer parámetro "/" es dónde buscar, en este caso "/" es todo el sistema.

-name podría ser -iname para ignorar el caso

también -tipo no es obligatorio

use: man find para más opciones


2
find / -name 'httpdocs' funciona muy bien gracias
Edward Tanguay

9191
Puede que no sea importante para búsquedas simples, pero para comandos de búsqueda más complejos, vale la pena señalar que las cosas se evalúan en el orden en que están en la línea de comandos. Por lo tanto, es posible que desee tener -type d (solo directorios) antes de -name, para acelerar las cosas. De nuevo, esto puede no importar mucho aquí, pero al entrar en búsquedas más complejas puede mejorar considerablemente la velocidad de búsqueda.
Dominic Eidson

14
En realidad, la -nameprueba es más rápida que la mayoría de las otras pruebas, ya que -namese compara con la lista del directorio, que ya está cargada desde el disco, y las otras pruebas deben realizarse stat(2)para obtener información del archivo. Después de la primera stat()llamada a un archivo, un análisis subsiguientes obtienen de la memoria, por ejemplo: -type f -mtime -10.
Arcege

24
Si va a realizar una búsqueda en todo el sistema de archivos, especialmente en un servidor, generalmente es bueno usarlo nicepara que la búsqueda no tome demasiados recursos de procesos más críticos:nice find / ...
Arcege

16
Añadiré 2> / dev / null para evitar que mis resultados de búsqueda se oculten en todos los errores de permiso.
Jason Yeo

62

este comando debería darte lo que estás buscando:

find / -type d -name httpdocs

que buscará desde la raíz de su servidor directorios con el nombre de httpdocs o, si solo desea buscar desde el directorio actual, reemplace '/' con un '.'

Otro comando que puedes probar es localizar que harías algo como:

locate httpdocs

localizar httpdocs me dice "localizar: comando no encontrado"
Edward Tanguay

44
Para aquellos que usan el comando "localizar" (dado que existe en su sistema), asegúrese de que la base de datos que busca esté actualizada; normalmente algún trabajo cron se encarga de eso. De lo contrario, ejecute "updatedb" (siendo root). Luego ejecute el necesario "localizar <archivo de archivo>". Esto es necesario para encontrar archivos / directorios agregados recientemente.
David Ramirez

+1 para localizar. Es mucho más rápido pero solo si su índice está actualizado. Afortunadamente, algo como "httpdocs" no cambiará de ubicación con frecuencia. Si planea buscar archivos repetidamente en una máquina, vale la pena los pocos minutos necesarios para configurar el trabajo cron actualizado.
Doug Harris

1
También en muchos casos, localizar devolverá demasiados resultados ya que se mostrarán todos los archivos de 100k en ese directorio. En este caso particular, si cada usuario tiene sus propios httpdocs con 100 o 1000 de archivos, el resultado que quiere el OP probablemente se perderá.
Jistanidiot

+1 para localizar ... Mantengo mi base de datos actualizada, por lo que este comando es muy útil ... Gran idea.
nicorellius


13

Es importante conocer el parámetro -iname para buscar patrones "sin distinción entre mayúsculas y minúsculas" y el uso de comodines: *,?, Etc.

Dos ejemplos:

Busque todos los archivos de / root que contengan la cadena "Linux", sin distinción entre mayúsculas y minúsculas:

find  /root -type f -iname "*linux*"

Busque en todos los directorios desde / root que contenga la cadena "Linux", sin distinción entre mayúsculas y minúsculas:

find  /root -type d -iname "*linux*"

Extraído de aquí:

http://www.sysadmit.com/2015/12/linux-buscar-ficheros-directorios-con-find.html


Esta pregunta trata sobre cómo encontrar un directorio cuyo nombre conozca, no cómo encontrar un directorio cuyo nombre conozca (aproximadamente). Además, la respuesta aceptada (¡de hace más de 6 años!) Ya menciona -inamecomo una alternativa que no distingue entre mayúsculas y minúsculas -name.
G-Man

9

casi lo tienes. la sintaxis correcta sería:

find / -type d -name httpdocs

El directorio está probablemente bajo /var/www/


que me dice "los caminos deben preceder a la expresión"
Edward Tanguay
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.