Helm Umbrella Charts
Tutorial de Vim

grep, find y locate. Comandos de búsqueda en Linux

grep find locate

Grep, find y locate son potentes comandos de Linux que se pueden utilizar para buscar ficheros y directorios. Vamos a intentar explicar cómo utilizar cada uno de estos comandos y las diferencias que los caracterizan.

Índice

Descripción de los comandos

Cada uno de estos comandos funciona de forma diferente, pero todos tienen el mismo objetivo: encontrar fichero y directorios que coincidan con un determinado criterio.

  • Grep es una herramienta de línea de comandos que busca patrones de texto dentro de los archivos. Se puede utilizar para buscar palabras o frases específicas, así como para buscar archivos que contengan determinadas palabras o frases.
  • Find es una herramienta de línea de comandos que busca archivos en un directorio. Puede utilizarse para buscar archivos en función de su nombre, tamaño u otros atributos.
  • Locate es una herramienta de línea de comandos que busca archivos en una base de datos. Puede utilizarse para buscar archivos en función de su nombre u otros atributos. Al guardar en una base de datos las búsquedas resulta más rápido para realizar búsquedas en una gran cantidad de datos.

Vamos a analizarlos uno a uno a través de ejemplos. Ya adelanto que el comando find es el más completo y por ello he detallado mucho más su uso.

Grep

grep significa Globally Search For Regular Expression and Print out (Búsqueda global de expresiones regulares). Tiene muchas opciones que permiten realizar varias acciones relacionadas con la búsqueda en archivos. En este artículo, observaremos como usar el comando grep con sus opciones disponibles tanto como expresiones regulares básicas para buscar archivos.

Manual de ayuda grep

Puedes verlo de manera resumida con «grep –help» o la forma extendida con «man grep».

Forma de uso: grep [OPCIÓN]... PATRONES [FICHERO] ...
Busca los PATRONES en cada FICHERO.
Ejemplo: grep -i «hola mundo» menu.h main.c
PATRONES puede contener diversos patrones separados por saltos de linea.

Selección e interpretación del patrón:
  -E, --extended-regexp     PATRONS son expressiones regulares ampliadas
  -F, --fixed-strings       PATRONS son conjuntos de cadenas separadas por saltos de linia
  -G, --basic-regexp        PATRONS son expressiones regulares básicas (por defecto)
  -P, --perl-regexp         PATRONS son expressiones regulares de Perl
  -e, --regexp=PATTERNS     use PATTERNS for matching
  -f, --file=FILE           take PATTERNS from FILE
  -i, --ignore-case         ignore case distinctions in patterns and data
      --no-ignore-case      do not ignore case distinctions (default)
  -w, --word-regexp         match only whole words
  -x, --line-regexp         match only whole lines
  -z, --null-data           a data line ends in 0 byte, not newline

Miscelánea:
  -s, --no-messages         elimina los mensajes de error
  -v, --invert-match        selecciona las linias que no coincidan
  -V, --version             muestra la información sobre la versión y sal
      --help                muestra esta ayuda y sal

Control de salida:
  -m, --max-count=NUM       se para despues de NUM coincidencias
  -b, --byte-offset         muestra el byte de desplazamiento con las lineas de salida
  -n, --line-number         muestra el número de linea con las lineas de salida
      --line-buffered       huelca la salida en cada linea
  -H, --with-filename       muestra el nombre del fichero con las lineas de salida
  -h, --no-filename         elimina los nombre de los ficheros de la salida
      --label=ETIQUETA      utiliza ETIQUETA como prefijo del nombre del fichero para la entrada estandard
  -o, --only-matching       muestra solo la parte de la linea que coincida
  -q, --quiet, --silent     elimina la salida normal
      --binary-files=TIPUS  asume que los ficheros binarios son de tipo TIPUS;
                            TIPUS puede ser «binary», «text» o «without-match»
  -a, --text                equivalente a --binary-files=text
  -I                        equivalente a --binary-files=without-match
  -d, --directories=ACCIÓ   como tratar los directorios;
                            ACCIÓN puede ser: «read», «recurse», o «skip»
  -D, --devices=ACCIÓ       como tratar los dispositivos, FIFOs y sòcols;
                            ACCIÓN puede ser: «read» o «skip»
  -r, --recursive           equivalente a --directories=recurse
  -R, --dereference-recursive  igual que la anterior, pero sigue todos los enlaces simbolicos
      --include=GLOB        search only files that match GLOB (a file pattern)
      --exclude=GLOB        skip files that match GLOB
      --exclude-from=FILE   skip files that match any file pattern from FILE
      --exclude-dir=GLOB    skip directories that match GLOB
  -L, --files-without-match  muestra solo los nombres de los FICHEROS que no tengan ninguna linea seleccionada
  -l, --files-with-matches  muestra solo los nombres de los FICHEROS que contengan alguna linea seleccionada
  -c, --count               muestra solo el nombre de lineas selecionadas por FICHERO
  -T, --initial-tab         alinea las tabulaciones (si se necesita)
  -Z, --null                muestra byte 0 después del nombre de FICHERO

Control del contexto:
  -B, --before-context=NOMBRE muestra un NOMBRE de lineas del contexto anterior
  -A, --after-context=NOMBRE  muestra un NOMBRE de lineas del contexto posterior
  -C, --context=NOMBRE        muestra un NOMBRE de lineas del contexto de salida
  -NUM                      same as --context=NUM
      --group-separator=SEP  print SEP on line between matches with context
      --no-group-separator  do not print separator for matches with context
      --color[=WHEN],
      --colour[=WHEN]       use markers to highlight the matching strings;
                            WHEN is 'always', 'never', or 'auto'
  -U, --binary              do not strip CR characters at EOL (MSDOS/Windows)

When FILE is '-', read standard input.  With no FILE, read '.' if
recursive, '-' otherwise.  With fewer than two FILEs, assume -h.
Exit status is 0 if any line is selected, 1 otherwise;
if any error occurs and -q is not given, the exit status is 2.

Report bugs to: bug-grep@gnu.org
Pagina inicial de GNU grep: <https://www.gnu.org/software/grep/>
General help using GNU software: <https://www.gnu.org/gethelp/>


 

Cómo usar grep

Sin el paso de ninguna opción, grep puede ser usado para buscar un patrón en un archivo o grupo de archivos. La sintaxis es:

grep '<texto-buscado>' <archivo/archivos>

Tenga en cuenta que las comillas simples o dobles son requeridas alrededor del texto si es más de una palabra. Además puedes usar el comodín (*) para seleccionar todos los archivos en un directorio.

El resultado de esto son las ocurrencias del patrón (por la línea en la que se encuentra) en los archivos. Si no existe una coincidencia, no se imprimirá ninguna salida en la terminal.

Ejemplos con grep

-n (–line-number) – enumera los números de línea

Imprime las coincidencias de un texto junto con los números de línea. Si observas el resultado anterior, notarás que no se encuentran los números de líneas, solo las coincidencias.

grep you grep.txt -n

Resultado:

1: Hello, how are you
3: Nice to meet you

-c (–count) – imprime el número de líneas de coincidencias

grep you grep.txt -c

Resultado:

2

Tenga en cuenta si existiera otro «you» en la línea uno, la opción -c aún imprimiría 2. Esto porque está relacionada con el número de líneas donde aparecen las coincidencias, no la cantidad de coincidencias.

-v (–invert-match) – imprime las líneas que no coinciden con el patrón especificado

grep you grep.txt -v -n

Resultado:

2. I am grep

-i (–ignore-case) – Utilizado para la distinción de mayúsculas y minúsculas

# comando 1
grep You grep.txt
# comando 2
grep YoU grep.txt -i

Resultado:

# resultado 1
# no hay resultados
# resultado 2
Hello, how are you
Nice to meet you

-l (–files-with-matches) – imprimir nombres de archivos que coincidan con un patrón

# comando 1
grep you grep.txt -l
# comando 2
grep You grep.txt -i -l

Resultado:

# resultado 1
grep.txt
# resultado 2
# todos los archivos en el directorio actual que coincidan
# el texto 'You' sea mayúscula o minúscula

`-w` (–word-regexp) – imprime coincidencias de toda la palabra

Por defecto, grep coincide con cadenas que contienen el patrón especificado. Esto significa que grep yo grep.txt imprimirá los mismos resultados que grep yo grep.txt porque ‘yo’ puede ser encontrado en ‘you’. Similarmente ‘ou’.

Con la opción -w, grep se asegura que las coincidencias sean exactamente el mismo patrón especificado, Ejemplo:

grep yo grep.txt -w

Resultado:

Sin resultados!

-o (–only-matching) – imprimir solo el patrón coincidente

Por defecto, grep imprime la línea donde se encuentra el patrón que coincide. Con la opción -o , solo los patrones que coincidan son impresos línea por línea. Ejemplo:

grep yo grep.txt -o

Resultado:

yo

-A (–after-context) y -B (–before-context) – imprimir las líneas después y antes (respectivamente) del patrón coincidente

grep grep grep.txt -A 1 -B 1

Resultado:

Hello, how are you
I am grep
Nice to meet you

Esta coincidencia de patrón se encuentra en la línea 2. -A 1 significa una línea después de la línea que coincide y -B 1 significa una línea antes de la línea que coincide.

Además existe -C (–context) opción el cual es igual a -A + -B. El valor pasado a -C se usaría para -A y -B.

-R (–dereference-recursive) – búsqueda recursiva

Por defecto, grep no puede buscar directorios. Si tú intentas hacerlo, obtendrás un error («Es un directorio»). Con la opción -R, la búsqueda de archivos entre directorios y subdirectorios se vuelve posible. Ejemplo:

grep you .

Resultado:

# 'you' coincide en carpetas
# y archivos a partir del
# directorio actual

Expresiones regulares para patrones

grep también permite especificar patrones con expresiones regulares básicas. Dos de ellas son:

^pattern – Inicio de línea

Este patrón significa que grep solo coincide con cadenas cuyas líneas empiecen con la cadena especificada después ^. Ejemplo:

grep ^I grep.txt -n

Resultado:

2: I
pattern$ – fin de la línea

En contraste con ^, $ especifica patrones que coincidirán si la línea termina con la cadena antes $. Ejemplo:

grep you$ grep.txt

Resultado:

1: Hello, how are you
3: Nice to meet you

find

Otra de las formas para buscar ficheros y directorios en sistemas Linux es utilizando el comando find. El comando Find en Linux es robusto y flexible, ya que permite el uso de argumentos y opciones para filtrar las búsquedas ya sea por fecha, tamaño, tipo, nombre, extensión, permisos, etc. Al ser un comando robusto puede ser difícil de aprender o recordar, pero con los ejemplos que tienes más abajo seguro que puedes empezar con él.

Manual de ayuda de find

Puedes verlo de manera resumida con «find –help» o la forma extendida con «man find».

Usage: find [-H] [-L] [-P] [-Olevel] [-D debugopts] [path...] [expression]

el camino por defecto es el directorio actual; la expresión por defecto es -print
la expresión puede consistir de operadores, opciones, evaluaciones y acciones:
operadores (prioridad decreciente;  -and es implícito cuando no se dan otros):
      ( EXPR )   ! EXPR   -not EXPR   EXPR1 -a EXPR2   EXPR1 -and EXPR2
      EXPR1 -o EXPR2   EXPR1 -or EXPR2   EXPR1 , EXPR2
opciones posicionales (siempre verdaderas): -daystart -follow -regextype
opciones normales (siempre verdaderas, especificadas antes otras expresiones):
      -depth -help -maxdepth NIVELES -mindepth NIVELES -mount -noleaf
      --version -xdev -ignore_readdir_race -noignore_readdir_race
evaluaciones (N puede ser +N o -N o N): -amin N -anewer FICHERO -atime N -cmin N
      -cnewer FICHERO -ctime N -empty -false -fstype TIPO -gid N -group NOMBRE
      -ilname PATRÓN -iname PATRÓN -inum N -iwholename PATRÓN -iregex PATRÓN
      -links N -lname PATRÓN -mmin N -mtime N -name PATRÓN -newer FICHERO
      -nouser -nogroup -path PATTERN -perm [-/]MODO -regex PATTERN
      -readable -writable -ejecutable
      -wholename PATTERN -size N[bcwkMG] -true -type [bcdpflsD] -uid N
      -used N -user NAME -xtype [bcdpfls] -contexto CONTEXTO

actions: -delete -print0 -printf FORMADO -fprintf HILO FORMADO -print
      -fprint0 HILO -fprint HILO -ls -fls HILO -prune -quit
      -exec COMMAND ; -exec COMMAND {} + -ok COMMAND ;
      -execdir COMMAND ; -execdir COMMAND {} + -okdir COMMAND ;

Argumentos válidos para -D:
exec, opt, ratas, search, stat, time, tree, ajo, help
Uso '-D help' for a description of the options, oro see find(1)

Please see also the documentation at https://www.gnu.org/software/findutils/.
You can report (and track progress donde fixing) bugs in the "find"
program via the GNU findutils bug-*reporting page at
https://savannah.gnu.org/bugs/?group=findutils oro, if
you have no web access, by sending email tono <bug-findutils@gnu.org>.

Como usar find

Sintaxis genérica:

grep <directory_path> <search_parameter> <search>
Ejemplo coloquial:
find <directorio donde buscar> -name <busqueda>

Como se puede observar, debemos escribir el comando find seguido de la ruta o directorio donde se va a buscar el archivo o carpeta en Linux, seguidamente deberemos incluir el parámetro de búsqueda y el nombre del archivo o carpeta que deseamos buscar.

Opciones básicas:

Parametro de busqueda Uso y Explicación
-name Filtrar por nombre de archivo exacto (distingue entre mayusculas y minusculas)
-iname Filtrar por nombre de archivo (no distingue entre mayusculas y minusculas)
-type Filtrar por tipo de archivo
-size, -empty Filtrar por tamaño de archivo
-ctime, -mtime, -atime Filtrar por marca de tiempo
-user, -group Filtrar por propietario y grupo
-perm Filtrar por derechos de archivo

Por otra parte, se pueden combinar dichos parámetros de búsqueda con operaciones lógicas «and, or, not», para de esta manera hacer una búsqueda más precisa en Linux. A continuación, te mostraremos una tabla con los operadores lógicos que pueden usarse para combinar los parámetros de búsqueda.

operadores lógicos Explicación
-and La búsqueda deben cumplir ambas condiciones
-or La búsqueda deben cumplir al menos una de las dos condiciones
-not Niega la condición posterior

Ejemplos con find

Buscar en un directorio concreto

Hay que tener en cuenta que esto solo buscara dentro de la carpeta que indiquemos, para buscar en las sub carpetas o subdirectorios debemos usar los parámetros de búsqueda '-name' y '-iname'. Por otra parte, si no conoces el nombre exacto del archivo o directorio no te preocupes, puedes utilizar la opción o comodín '*' de esta manera buscara con Find todos los archivos o directorios que contengan la palabra o extensión buscada.

Con el comando Find podemos especificar en que directorio se debe buscar, por ejemplo, usando la opción «.» buscaremos en el directorio donde este situado el prompt.

find . <search_parameter>

Usando la opción «~» en el directorio home del usuario actual.

find ~ <search_parameter>

Podemos usar el símbolo raíz ‘/’ para buscar en todo el sistema. Si no estás como usuario root no te permitirá realizar búsquedas en todos los directorios protegidos, deberás dar permiso «sudo».

find / <search_parameter>

⚠️ Se debe tener especial cuidado al usar el Linux Find en todo el sistema con el parámetro '-exec'⁣, ya que esto podría dañar tu sistema operativo.

Personalizar los resultados de la búsqueda

Al usar el comando de Linux Find los resultados pueden ser muy extensos, para solucionar esto usaremos las utilidades u opciones de la línea de comandos los cuales serán de gran utilidad para ordenar los resultados mostrados con tuberías.

Para mostrar los resultados página a página usaremos el parámetro ‘less’:

find <directory_path> <search_parameter> | less
# Ejemplo Practico
find ~ -iname Nombre_del_archivo | less

Para conocer el número de resultados, usaremos el comando ‘wc’ Seguido del parámetro ‘-l’:

find <directory_path> <search_parameter> | wc -l
# Ejemplo Practico
find ~ -iname Nombre_del_archivo | wc -l

En caso de que solo queramos ver los primeros o los últimos resultados de la búsqueda debemos usar los comandos ‘head’ y ‘tail’ seguido del parámetro ‘-n’ y el número de resultados deseados.

find <directory_path> <search_parameter> | head -n <amount>
find <directory_path> <search_parameter> | tail -n <amount>
# Ejemplo Practico, muestra los primeros 3 resultados de la busqueda
find ~ -iname Nombre_del_archivo | head -n 3

Filtrar por tipos de archivo

Con el parámetro de búsqueda ‘type’ podremos distinguir entre archivos, directorios y enlaces.

Tipo de Archivo Explicación
f Archivo
d Directorio
l Enlace

Por ejemplo, para filtrar los resultados de la búsqueda y mostrar únicamente los archivos usaremos el parámetro ‘-type’ seguido del tipo de archivo en este caso ‘f’:

find ~ -iname ejemplo.txt -type f

Con ayuda de operadores lógicos

En caso de que necesitemos buscar varios tipos de extensión podemos usar los operadores lógicos mencionados anteriormente. Por ejemplo, en el caso que queramos buscar todos los tipos de archivo con extensión .gif y .jpg:

find ~ -iname *.gif* -or -iname *.jpg* -type f 

Borrar un archivo resultante de la búsqueda

También podemos usar el comando Find de Linux para buscar y eliminar un archivo de la siguiente forma:

find ~ -name "ejemplo.txt" -delete

Buscar por marca de tiempo

Linux crea propiedades de tiempo para los archivos, carpetas o directorios entre ellas podemos encontrar las de marca de tiempo la cuales son:

  • Creación.
  • Última modificación.
  • Último acceso a un archivo.

Usando el comando Find en Linux podemos filtrar y encontrar las marcas de tiempo en las búsquedas para ello utilizaremos ciertos parámetros de búsqueda, los cuales presentaremos a continuación:

Parámetro de búsqueda Explicación
-ctime, -cmin Filtrar por fecha de creación
-mtime, -mmin Filtrar por fecha de modificación
-atime, -amin Filtrar por fecha de acceso

Por ejemplo, buscar archivos que se cambiaron hace menos 4 días en la carpeta Documentos:

find ~/Documentos -ctime -4

Buscar archivos que se modificaron hace menos 60 minutos en la carpeta Documentos:

find ~/Documentos -mmin -60

Buscar archivos a los que se accedió hace menos de 3 días en la carpeta Documentos:

find ~/Documentos -atime +3

También podemos especificar un rango de días usando los modificadores ‘+’ y ‘-‘.

Si deseamos encontrar archivos creados hace más de 60 días usaremos el parámetro -ctime anidándole el valor numérico ‘100’ anteponiendo el modificador +:

find . -type f -ctime +100

Con el comando Find podemos cubrir rangos específicos en este caso buscaremos archivos que se accedieron entre 10 y 20 días:

find . -type f -atime +10 -and -atime -20

Buscar por tamaño de archivo

Con el comando find podemos filtrar la búsqueda por el tamaño del archivo utilizando el parámetro ‘-size' y a continuación un valor numérico que especificara el tamaño deseado.

En el siguiente ejemplo buscaremos archivos con un tamaño mayor a 1 GB:

find . -size +1G

Las unidades disponibles el comando find son las siguientes:

Unidad Explicación
c Bytes
k Kilobytes
M Megabytes
G Gigabytes
b 512-byte bloques

Por otra parte, si queremos buscar archivos vacíos con el comando Find utilizaremos el parámetro ‘-empty’ de la siguiente forma:

find . -type f -empty

También se pueden buscar directorios vacíos con el comando Find utilizando el tipo de archivo ‘d’:

find . -type d -empty

Buscar por propietario, grupo o derechos de acceso

A continuación se mostrará una tabla con los parámetros de búsqueda más utilizados:

Parametro Explicación
-user Filtra la busqueda por propietario
-group Filtra la busqueda por Grupo
-perm Filtra la busqueda por permisos o derechos de acceso

En caso de que deseemos buscar los archivos de nuestro propio usuario o el usuario conectado actualmente utilizaremos el parámetro ‘-user-‘ y la expresión ‘$(whoami)’, dicha expresión tomara el nombre del usuario actual:

find . -user $(whoami)

Si deseamos buscar archivos que son accesibles para todos los usuarios debemos usar el parámetro ‘-perm’ seguido del número octal ‘777’:

find . -perm 777

Limitar la recursividad

Generalmente, el comando find en Linux recorrerá todos los directorios y subdirectorios. No obstante, es recomendable limitar la profundidad de la recursividad, es por ello que existen dos parámetros de búsqueda que nos ayudaran a limitar dicha recursividad los cuales son ‘-maxdepth’ y ‘-mindepth’.

Si deseamos encontrar archivos que tengan un tamaño de más de 1 Gigabyte y que solo busque en los directorios que no estén a más de 3 niveles de profundidad del directorio actual, usaremos el siguiente comando:

find . -type f -maxdepth 3 -size +1G

Si deseamos encontrar archivos que tengan un tamaño de más de 1 Gigabyte y que solo busque en los directorios que estén a 3 niveles y no más de 6 niveles de profundidad del directorio actual, usaremos el siguiente comando:

find . -type f -mindepth 3 -and -maxdepth 6 -size +1GB

Encontrar y procesar archivos

Es algo muy común que se requiera procesar una gran cantidad de archivos ya sea para modificar sus permisos, repararlos o eliminarlo y en estos casos podremos usar el comando Find para realizar dicha tarea.

A continuación, se mostrará de forma general como usar el comando find y el patrón que se debe usar para ejecutar un comando para cada archivo que se encuentre. No obstante, hay que aclarar que todo comando de este tipo deberá terminar siempre con el texto {} \;:

find   -exec  {} \;

Encontrar y modificar los usuarios y grupos

Si deseamos establecer la propiedad y grupo a uno o todos los archivos y directorios de una ruta en específico usaremos el comando find con el parámetro chown en este caso estableceremos todos los archivos y directorios contenidos en el directorio llamado Carpeta1 a ‘www-data’ de la siguiente manera:

find ~/Documentos/Carpeta1 -maxdepth 1 -exec chown www-data:www-data {} \;

Encontrar y ajustar los permisos de archivos en Linux

En Linux podemos buscar y cambiar los permisos de un archivo o directorio con el comando Find utilizando el comando chmod. Un ejemplo práctico general sería cambiar los permisos 777 a 664 y lo hacemos de la siguiente manera:

find ~ -type f -maxdepth 1 -perm 777 -exec chmod 664 {} \;

En caso de querer hacerlo con los directorios usaremos el siguiente comando:

find . -type d -maxdepth 1 -exec chmod 755 {} \;

Buscar y encontrar archivos y directorios vacíos

Si deseamos buscar y borrar directorios vacíos con el comando Find usaremos el comando rmdir de la siguiente manera:

find . -type d -maxdepth 1 -empty -ok rmdir {} \;

Por otra parte, si deseamos eliminar todos los archivos vacíos en Linux usaremos el siguiente comando:

find . -type f -maxdepth 1 -empty -ok rm {} \;

Buscar texto dentro de los archivos

Hemos visto que el comando grep es muy adecuado para esto, también lo podemos utilizar con find. Para buscar un texto dentro de un archivo con el comando Find usaremos el comando grep seguido del texto a buscar de la siguiente manera:

find ~ -type f -name "*.txt" -exec grep 'texto-a-buscar' {} \;

Buscar archivos ocultos

En ciertos casos necesitaremos buscar archivos ocultos en el sistema en este caso buscaremos los archivos ocultos en la carpeta de usuario que son aquellos que comienzan por un punto, para ello utilizaremos el siguiente comando:

find $HOME -type f -name ".*"

Con esto hemos concluido con los ejemplos del comando Find. Ha sido más extensa porque de los comandos de búsqueda que mostramos es el más completo.

locate

Una alternativa a utilizar find es el comando locate. A menudo, este comando es más rápido y puede realizar una búsqueda en todo el sistema de archivos con facilidad. Aunque no es tan completo.

Manual de ayuda de locate

Puedes verlo de manera resumida con «locate –help» o la forma extendida con «man locate». Si da error puede que sea porque no tienes el comando instalado.

Usage: plocate [OPTION]... PATTERN...

-b, --basename search only the file name portion of path names
-c, --count print number of matches instead of the matches
-d, --database DBPATH search for files in DBPATH
(default is /var/lib/plocate/plocate.db)
-i, --ignore-case search case-insensitively
-l, --limit LIMIT stop after LIMIT matches
-0, --null delimit matches by NUL instead of newline
-N, --literal do not quote filenames, even if printing to a tty
-r, --regexp interpret patterns as basic regexps (slow)
--regex interpret patterns as extended regexps (slow)
-w, --wholename search the entire path name (default; see -b)
--help print this help
--version print version information

Como usar locate

Este comando no suele venir en las distros Linux, así que lo tendremos que instalar.

Puede instalar el comando en Debian o Ubuntu con apt:

sudo apt install mlocate

En CentOS, utilice dnf en su lugar:

sudo dnf install mlocate

La razón por la que locate es más rápido que find es porque utiliza una base de datos de los archivos en el sistema de archivos.

Normalmente, la base de datos se actualiza una vez al día con una secuencia de comandos de Cron, pero puede actualizarla de forma manual escribiendo lo siguiente:

sudo updatedb

Ejecute ese comando ahora. Recuerde que la base de datos siempre debe estar actualizada si desea encontrar archivos recientemente adquiridos o creados.

Ejemplos con locate

Para encontrar archivos con locate, simplemente utilice la siguiente sintaxis:

locate query

Puede filtrar el resultado de alguna manera.

Por ejemplo, para solo obtener archivos que contengan la consulta en sí, en vez de obtener cada archivo que contenga la consulta en los directorios en que se encuentre, puede utilizar el -b solamente para buscar el “nombre de base”:

locate -b query

Para que con locate solo se obtengan resultados que todavía existen en el sistema de archivos (que no se eliminaron entre la última invocación de updatedb y la invocación actual de locate), utilice el indicador -e:

locate -e query

Para ver estadísticas sobre la información que se catalogó con locate, utilice la opción -S:

locate -S
Output
Database /var/lib/mlocate/mlocate.db:
3,315 directories
37,228 files
1,504,439 bytes in file names
594,851 bytes used to store database

Conclusión

grep, find y locate son buenas herramientas para encontrar archivos en su sistema, a cada uno le corresponde decidir cuál usar en cada situación. Debemos contar también que utilizando tuberías podemos hacer estos comandos mucho más potentes. Por ejemplo, se puede probar con wc, sort y grep 😊

Más apuntes

Invítame a un café con bitcoins:
1QESjZDPxWtZ9sj3v5tvgfFn3ks13AxWVZ

Bitcoins para café
También puedes invitarme a algo para mojar...

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Rellena este campo
Rellena este campo
Por favor, introduce una dirección de correo electrónico válida.
Tienes que aprobar los términos para continuar