texto recursivo por fecha extension ejemplos consola comandos comando buscar archivos linux find ksh locate which

linux - recursivo - comando find unix



¿Cómo puedo encontrar un archivo/directorio que podría estar en cualquier lugar en la línea de comandos de Linux? (5)

"Desafortunadamente, esto parece comprobar solo el directorio actual, no toda la carpeta". Presumiblemente quiere decir que no se ve en subdirectorios. Para arreglar esto, usa find -name "filename"

Si el archivo en cuestión no está en el directorio de trabajo actual, puede buscar en toda su máquina a través de

find / -name "filename"

Esto también funciona con cosas como find / -name "*.pdf" , etc. A veces también me gusta incluir eso en una declaración grep (ya que, al menos en mi máquina, resalta los resultados), así que termino con algo como

find / -name "*star*wars*" | grep star

Hacer esto o un método similar solo me ayuda a encontrar el nombre del archivo de forma instantánea y reconocer si, de hecho, es el archivo que estoy buscando.

Idealmente, podría usar un programa como

find [file or directory name]

para informar las rutas con nombres / directorios de archivos coincidentes. Desafortunadamente, esto parece verificar solo el directorio actual, no la carpeta completa.

También he intentado localizar y cuáles, pero ninguno encuentra el archivo, aunque sé que está en la computadora en alguna parte.


El comando find llevará mucho tiempo, la forma más rápida de buscar archivos es usar el comando locate , que busca los nombres de los archivos (y la ruta) en una base de datos indexada (actualizada mediante el comando updatedb ).

El resultado aparecerá de inmediato con un simple comando:

locate {file-name-or-path}

Si no se encuentra el comando, debe instalar el paquete mlocate y ejecutar el comando updatedb primero para preparar la base de datos de búsqueda por primera vez.

Más detalles aquí: https://medium.com/@thucnc/the-fastest-way-to-find-files-by-filename-mlocate-locate-commands-55bf40b297ab


El siguiente ejemplo ayudará a encontrar la carpeta específica en el directorio actual. Este ejemplo solo busca la corriente directa y buscará el subdirectorio disponible en el directorio actual

#!/bin/bash result=$(ls -d operational) echo $result test="operational" if [ "$result" == "$test" ] then echo "TRUE" else echo "FALSE" fi


Para deshacerse de los errores de permiso (y cosas por el estilo), puede redirigir stderr a la nada

find / -name "something" 2>/dev/null


Si necesita encontrar anidado en algunos directorios:

find / -type f -wholename "*dirname/filename"

O dirs conectados:

find / -type d -wholename "*foo/bar"