saber - linux buscar un archivo
¿Cómo puedo encontrar recursivamente todos los archivos en las subcarpetas actuales y en función de la coincidencia de comodines? (12)
¿Cómo puedo encontrar recursivamente todos los archivos en las subcarpetas actuales y en función de la coincidencia de comodines?
El hallazgo de tuberías en grep es a menudo más conveniente; le da el poder completo de las expresiones regulares para la coincidencia de comodines arbitrarios.
Por ejemplo, para encontrar todos los archivos con la cadena "foo" que no distingue entre mayúsculas y minúsculas en el nombre de archivo:
~$ find . -print | grep -i foo
El siguiente comando ayuda a buscar cualquier archivo
1) Independientemente del caso
2) Resultado Excluyendo carpetas sin permiso
3) Buscando desde la raíz o desde la ruta que te gusta. Cambia / con el camino que prefieras.
Sintaxis:
encontrar -iname '''' 2> & 1 | grep -v "Permiso denegado"
Ejemplo
encuentre / -iname ''C * .xml'' 2> & 1 | grep -v "Permiso denegado"
find / -iname ''*C*.xml'' 2>&1 | grep -v "Permission denied"
La forma predeterminada de buscar archivos recursivos, y disponible en la mayoría de los casos, es
find . -name "filepattern"
Comienza el recorrido recursivo para el nombre de archivo o patrón desde el directorio actual en el que se encuentra. Con el comando Buscar, puede usar comodines y varios interruptores para ver la lista completa de opciones, escriba
man find
o si las páginas man no están disponibles en su sistema
find --help
Sin embargo, hay herramientas más modernas y más rápidas que buscar, que están recorriendo todo su sistema de archivos e indexando sus archivos, una de esas herramientas comunes es localizar o ubicar / ubicar, debe consultar el manual de su sistema operativo sobre cómo instalarlo, y una vez que esté instalado, debe iniciar la base de datos; si el script de instalación no lo hace por usted, puede hacerlo manualmente escribiendo
sudo updatedb
Y, para usarlo para buscar algún tipo de archivo en particular.
locate filename
O, para buscar un nombre de archivo o patrón dentro del directorio actual, puede escribir:
pwd | xargs -n 1 -I {} locate "filepattern"
Revisará su base de datos de archivos e imprimirá rápidamente los nombres de las rutas que coincidan con el patrón que ha escrito. Para ver la lista completa de opciones de localización, escriba: locate --help
o man locate
Además, puede configurar localizar para actualizar su base de datos en los tiempos programados a través del trabajo cron, por lo que la muestra cron que las actualizaciones de la base de datos a la 1AM se vería así:
0 1 * * * updatedb
Estos trabajos cron deben configurarse por raíz, ya que updatedb necesita privilegios de raíz para atravesar todo el sistema de archivos.
Puedes usar:
# find . -type f -name ''text_for_search''
Si quieres usar REGX usa -iname
# find . -type f -iname ''text_for_search''
Si desea buscar un archivo especial con comodines, puede utilizar el siguiente código:
find . -type f -name "*.conf"
Supongamos que desea buscar todos los archivos .conf desde aquí:
.
significa búsqueda iniciada desde aquí (lugar actual)
-type
significa tipo de elemento de búsqueda que aquí es archivo (f).
-name
significa que desea buscar archivos con nombres * .conf .
Si su shell admite una nueva opción de globging (puede habilitarse mediante: shopt -s globstar
), puede usar:
echo **/*foo*
para encontrar cualquier archivo o carpeta de forma recursiva. Esto es compatible con Bash 4, zsh y shells similares.
Personalmente tengo esta función de shell definida:
f() { find . -name "*$1*"; }
Nota: la línea anterior se puede pegar directamente al shell o agregarse al archivo ~/.bashrc
su usuario.
Entonces puedo buscar cualquier archivo escribiendo:
f some_name
Alternativamente, puede usar una utilidad fd
con una sintaxis simple, por ejemplo, fd pattern
.
Utilice find para eso:
find . -name "foo*"
find
necesita un punto de partida, y el .
(punto) apunta al directorio actual.
para buscar archivos
find / -xdev -name settings.xml
-> equipo completo
find ./ -xdev -name settings.xml
-> directorio actual y su subdirectorio
para archivos con tipo de extensión
find . -type f -name "*.iso"
find
encontrará todos los archivos que coincidan con un patrón:
find . -name "*foo"
Sin embargo, si quieres una foto:
tree -P "*foo"
¡Espero que esto ayude!
find <directory_path> -type f -name "<wildcard-match>"
En la coincidencia de caracteres comodín puede proporcionar la cadena que desea hacer coincidir, por ejemplo, * .c (para todos los archivos c)
find -L . -name "foo*"
En algunos casos, he necesitado el parámetro -L para manejar enlaces de directorio simbólicos. Por defecto los enlaces simbólicos son ignorados. En esos casos fue bastante confuso ya que cambiaría el directorio a un subdirectorio y vería el archivo que coincide con el patrón, pero el resultado no devolvería el nombre del archivo. Usando -L resuelve ese problema. Las opciones de enlace simbólico para encontrar son -P -L -H