GNU/Linux >> Tutoriales Linux >  >> Linux

Encuentre archivos y directorios en Linux fácilmente

Este tutorial se centra en cómo encontrar archivos en Linux utilizando los comandos de búsqueda y localización.

Como administrador del sistema, es una tarea muy común buscar un archivo específico en su sistema de archivos .

Sin embargo, a veces puede ser difícil encontrar archivos en un sistema Linux. sistema de archivos, especialmente si tiene docenas de usuarios diferentes.

Hay dos comandos que pueden ayudarlo a lograr su objetivo:buscar y localizar.

En este tutorial, veremos cómo usar esos comandos de manera efectiva y cómo se pueden ajustar para lograr lo que estamos buscando.

Buscar archivos usando el comando Buscar

La primera forma de buscar y ubicar archivos en un host Linux es usar el comando de búsqueda.

De forma predeterminada, el comando de búsqueda está disponible en todas las distribuciones y tiene la siguiente sintaxis

$ find <options> <path> <expression>

Consejo rápido :¿tiene algún problema para recordar si el camino o la expresión van primero?

Recuerda que para el grEP es E expresión x P ath, y encontrar es lo contrario, entonces P ath E expresión!

Buscar es un comando bastante poderoso ya que tiene muchas más opciones que el comando de localización.

Aquí están todas las posibilidades de la función de búsqueda en Linux.

Buscar archivos con buscar por nombre de archivo

El uso más común de la función de búsqueda es localizar archivos dados sus nombres de archivo .

$ find <path> -name <pattern>

La principal diferencia entre buscar y localizar cuando se trata de buscar archivos es que buscará nombres de archivo mientras que localizar buscará rutas al archivo.

Por ejemplo, si volvemos al ejemplo de nivel de ejecución que usamos antes, aquí se explica cómo buscar archivos de nivel de ejecución usando el comando de búsqueda.

$ find / -name runlevel*

¿Qué es la parte "2> /dev/null"?

Redirigí la salida de error a /dev/null usando la redirección de salida para evitar mensajes de error en la consola.

Encuentre archivos utilizando buscar por tipo de archivo

Como discutimos anteriormente en nuestro artículo sobre enlaces duros y suaves, a los archivos se les asignan tipos de archivo y se usa como una forma de diferenciarlos.

Aquí hay un resumen de todos los tipos de archivos usados ​​en Linux.

  • f :un archivo estándar
  • d :una carpeta o directorio
  • l :un enlace simbólico o enlace suave
  • b :bloquear dispositivos (como un disco duro, por ejemplo)
  • c :dispositivos de caracteres (puertos serie, tarjetas de sonido)
  • p :tubería con nombre
  • s :enchufe

Al conocer todos esos tipos de archivos, ahora puede buscar archivos por tipo de archivo con el comando de búsqueda.

$ find <path> -type <filetype>

Por ejemplo, si buscamos todos los enlaces simbólicos en el host, emitiríamos el siguiente comando.

$ find / -type l

Los parámetros se pueden combinar, por ejemplo, si busco todos los enlaces simbólicos cuyos nombres de archivo terminan en ".service" (para aislar todos los servicios systemd, por ejemplo), ejecutaría el siguiente comando.

$ find / -type l -name *.service

Buscar archivos usando un patrón (para extensiones)

De manera similar al comando de localización, puede encontrar archivos en Linux usando un patrón.

Como recordatorio, un patrón es una cadena que incluye caracteres globales (como *, ? o rangos).

Esta opción es especialmente útil cuando intenta encontrar archivos con una extensión, por ejemplo, archivos Javascript.

Para encontrar archivos en Linux usando un patrón, ejecute el siguiente comando

$ find <path> -name ".<extension>"
$ find / -name "*.js"

Archivos archivos en Linux por propietario

A veces, desea aislar archivos creados por un determinado usuario .

Al eliminar un usuario en su host, es posible que desee eliminar todos los archivos asociados con este usuario, por ejemplo.

A veces, los usuarios crean archivos fuera de su directorio de inicio y eliminar un directorio de inicio de usuario no es suficiente por sí solo.

Como consecuencia, para encontrar archivos creados por un determinado usuario en Linux, ejecute el siguiente comando

$ find <path> -user <user>

Por ejemplo, para encontrar todos los archivos propiedad de "john" en mi host, ejecutaría el siguiente comando.

$ find / -user john

Ahora, ¿qué pasa si quiero eliminar todos los archivos propiedad de john con un simple comando?

Se puede lograr fácilmente usando la bandera de eliminación.

$ find / -user john -delete

Buscar archivos en Linux por permisos

Con el comando de búsqueda, también puede encontrar y ubicar archivos que tienen ciertos permisos en su host.

$ find <path> -perm <permissions>

Como recordatorio, así es como funcionan los permisos de archivo en Linux.

Para encontrar todos los archivos que tienen permisos completos (un 777 dada la notación binaria), puede ejecutar el siguiente comando.

$ find / -perm 777

Puede ser bastante útil si, por razones de seguridad, desea inspeccionar si no hay archivos configurados con permisos completos en su sistema.

Buscar archivos con buscar por tamaño

Otra forma muy útil de encontrar y ubicar archivos en Linux es encontrar el comando de búsqueda con la opción de tamaño.

La opción de tamaño le permite buscar archivos que tengan exactamente el tamaño que está especificando, mayor que un tamaño específico o menor que un tamaño específico.

Para buscar archivos por tamaño, use el siguiente comando

$ find <path> -size <size>

El tamaño está definido por los siguientes prefijos:

  • c :bytes
  • b :bloques de 512 bytes
  • k :kilobytes
  • M :Megabytes
  • G :Gigabytes

Puede especificar un "+" si está buscando archivos con un tamaño superior al especificado.

Por ejemplo, para encontrar archivos de más de 1 GB en su sistema, ejecute el siguiente comando

$ find / -size +1G

Para encontrar archivos de menos de 10 MB en su sistema , ejecuta el siguiente comando

$ find / -size -10M

Finalmente, para buscar archivos que sean exactamente el tamaño especificado en la consulta, no debe agregar ningún prefijo más o menos al comando.

$ find / -size 1024k

El comando recién definido encontrará todos los archivos que tengan exactamente 1024 Kb de tamaño en su host.

Buscar archivos en Linux por fecha de modificación

Con la búsqueda, también puede encontrar archivos con una fecha de modificación, reciente o no.

Este comando es muy útil y los administradores de sistemas lo utilizan con bastante frecuencia para buscar archivos o directorios que se hayan modificado recientemente.

Para buscar archivos usando buscar por fecha de modificación, ejecute el siguiente comando

$ find <path> -mtime <time>

Donde time representa los archivos modificados hace 24* .

Como consecuencia, el tiempo se expresa en días.

De manera similar a la opción de tamaño, puede agregar un "más ” o un “menos ” al operador tiempo para buscar archivos modificados hace más de

Por ejemplo, para buscar archivos modificados hace exactamente 3 horas , ejecutaría el siguiente comando.

$ find / -mtime 3

Para buscar archivos modificados hace más de una semana , ejecutaría el siguiente comando

$ find / -mtime +7

Para buscar archivos modificados hace menos de dos días , ejecutará el siguiente comando

$ find / -mtime -2

Buscar archivos con profundidad dinámica

Como probablemente haya notado, desde el comienzo de este tutorial, estamos dando ejemplos de búsquedas de archivos que comienzan desde el directorio raíz.

Como consecuencia, todas las carpetas se exploran recursivamente.

Sin embargo, podemos restringir la cantidad de directorios recorridos recursivamente desde un directorio, esto se denomina profundidad.

Para limitar las búsquedas de archivos a una profundidad determinada , ejecuta la siguiente consulta

$ find <path> -maxdepth <depth>

Como ejemplo, así es como puede restringir las búsquedas de archivos al directorio actual, sin que se exploren directorios secundarios.

$ find / -maxdepth 1

Obviamente, puede combinar este comando con el indicador de nombre para buscar archivos con un nombre determinado en el directorio actual.

$ find . -maxdepth 1 -name *.tar

Encadenamiento de búsqueda con -exec

En algunos casos, puede resultarle útil encadenar el comando de búsqueda con el de exec.

La opción exec se puede utilizar para encadenar varios comandos:tomando el resultado del primero como entrada del segundo.

Digamos, por ejemplo, que desea buscar todos los archivos modificados hace menos de un minuto

$ find /home/user -mmin -1
./file1

Ahora supongamos que desea eliminar todos los archivos que se modificaron hace menos de un minuto.

Puede encadenar el comando de búsqueda con la opción -exec usando esta sintaxis.

$ find /home/user -mmin -1 -exec echo rm -f '{}' \;

Obviamente, primero hacemos eco de los resultados, ya que queremos asegurarnos de que estamos eliminando los archivos correctos.

Cuando esté listo para eliminar esos archivos, simplemente elimine el comando echo.

$ find /home/user -mmin -1 -exec rm -f '{}' \;

Buscar archivos en Linux usando el comando Localizar

Otra excelente manera de buscar y ubicar archivos en Linux es usar el localizar comando.

Requisitos

Si el comando de localización no está disponible en su sistema, asegúrese de leer la siguiente sección para que la localización se ejecute en su sistema.

a:instalación de Locate en distribuciones basadas en APT y RPM

Para instalar ubicar , necesitará privilegios sudo en su host Linux.

Para comprobar si la localización está instalada en su host, ejecute el comando de localización en la línea de comandos.

$ locate

Si la localización está instalada en su computadora, esperará que se proporcione una expresión

Si la localización no está instalada en su host, se mostrará un mensaje de error

Para instalar la ubicación en Ubuntu 18.04 y Debian 10, ejecute el siguiente comando.

$ sudo apt-get install mlocate

Del mismo modo, si tiene una distribución basada en CentOS o Fedora, ejecute el siguiente comando para instalar la ubicación.

$ sudo yum install mlocate

b – Actualización de su base de datos mlocate

El localizar funciona con una base de datos local almacenada en su sistema de archivos que almacena cada nombre de archivo de su host.

Al realizar un comando de localización, la localización buscará en la base de datos preparada por updatedb para el archivo que está buscando.

Periódicamente, un trabajo cron actualiza el mlocate.db para que busque las entradas más recientes.

La base de datos se encuentra en /var/lib/mlocate/mlocate.db de forma predeterminada y el archivo de configuración de updatedb se almacena en /etc/updatedb.conf .

Por ahora, puede dejar las opciones predeterminadas y ejecutar un simple comando updatedb para que su base de datos se actualice.

$ sudo updatedb

Localizar archivos con un patrón de nombre

La forma más básica de encontrar archivos en Linux es proporcionar un patrón al comando de localización .

Por defecto, la sintaxis del comando de localización es la siguiente

$ locate [OPTION]... [PATTERN]...

Si está buscando un archivo de configuración determinado en su sistema, una manera fácil de encontrarlo es proporcionar su nombre de archivo completo al comando de localización.

$ locate updatedb.conf

Como puede ver, el comando de localización devuelve las rutas completas al archivo que estoy buscando.

Localizar archivos en directorios restringidos

A veces, es posible que no tenga acceso a algunos directorios de su sistema.

Como consecuencia, no podrá localizar los archivos que se encuentran en él.

Tomemos el ejemplo de una carpeta prohibida que contiene un archivo llamado "archivo restringido “.

Para localizar archivos ubicados en directorios restringidos, debe ejecutar el comando de localización con privilegios sudo.

$ sudo locate restricted-file

Ubicar archivos usando un patrón

Con el comando de localización, puede proporcionar "patrones" en forma de caracteres globales .

Personajes globulosos , también llamados comodines, son caracteres que se utilizan para hacer coincidir una o varias entradas con una expresión simplificada.

El más popular es el “* ” que coincidirá con cualquier carácter, incluido ninguno.

Aquí hay una tabla de recapitulación para los personajes globbing y sus funciones.

Como ejemplo, aquí hay una forma de ubicar todos los archivos de texto en su sistema.

$ locate *.txt

Ubicar archivos usando una expresión regular

Como se indica en la página del manual oficial para localizar, el comando de localización acepta un patrón como entrada.

Significa que puede proporcionar una expresión regular al comando de localización.

Para buscar y ubicar archivos con una expresión regular, use –regex opción para el comando de localización.

$ locate --regex <regex>

Por ejemplo, para aislar todos los archivos que comienzan con runlevel seguido de un número, ejecutaría el siguiente comando.

$ locate --regex runlevel[0-9]+

Al usar expresiones regulares, hay un punto importante que debe tener en cuenta al ubicar archivos.

El comando de localización busca rutas a archivos en su base de datos local.

Como consecuencia, al buscar archivos, debe tener en cuenta que su expresión regular debe coincidir con la ruta del archivo y no solo con el nombre del archivo.

Por ejemplo, si busco archivos que comienzan con "ejecutar", no se devolverán resultados ya que la ruta al archivo comienza con "/usr".

Ubicar archivos usando la opción que no distingue entre mayúsculas y minúsculas

Al buscar archivos en su sistema de archivos, es posible que no esté seguro de la forma en que se nombró un archivo determinado.

¿Estaba escrito en mayúsculas o en minúsculas? ¿Contiene alguna letra mayúscula?

Para buscar y localizar archivos utilizando una opción que no distingue entre mayúsculas y minúsculas, agregue la opción -i a su comando de localización.

$ locate -i <file_pattern>

Buscar archivos por contenido usando grep

En algunos casos, puede estar interesado en buscar archivos que coincidan con una palabra específica de una oración que se encuentra DENTRO del archivo.

Esto puede suceder, por ejemplo, si intenta encontrar el archivo que contiene eventos de registro específicos.

La primera forma de buscar archivos que coincidan con una palabra específica es usando el comando grep

$ grep -r <pattern> <path>

Nota :no olvide la opción “-r” si está buscando archivos en directorios completos.

Por ejemplo. si está buscando todos los archivos que tienen "error" en su contenido, ubicados en su directorio de inicio, debe escribir

$ grep -r error /home/user

En algunos casos, es posible que desee buscar archivos con una expresión regular.

Para buscar archivos usando una expresión regular, use la opción "-E".

$ grep -r -E <expression> <path>

Digamos, por ejemplo, que desea encontrar el archivo que coincide con el patrón 'abc' en uno de sus archivos, debe escribir

$ grep -r -E "abc.*" --color /home/user

Nota :la opción de color se usa para resaltar las coincidencias usando el comando grep.

Buscar archivos usando los cuales

Otra excelente forma de ubicar archivos en Linux es usar el comando which.

El comando which se utiliza para localizar los archivos asociados con un comando específico.

Esto puede ser muy útil cuando no sabe dónde almacenó sus archivos binarios para un comando o si necesita ubicar un comando para agregarlo a su RUTA.

$ which <command>

Por ejemplo, para buscar archivos asociados al comando “ls”, escribiría

$ which ls
/usr/bin/ls

Como puede ver, se le proporciona la ruta completa al archivo.

Ubicar binarios usando whereis

Del mismo modo, es completamente posible buscar archivos usando el comando whereis.

El comando "whereis" puede verse como un superconjunto del comando "whereis":"whereis" proporciona información sobre el nombre del comando, la ubicación del archivo y la ubicación de las páginas del manual.

Para ejecutar whereis, simplemente escriba "whereis" y agregue el nombre de su comando.

$ whereis ls
ls: /usr/bin/ls /usr/share/man/man1/ls.1.gz

¡Muy útil!

Conclusión

En el tutorial de hoy, aprendiste cómo puedes encontrar y ubicar archivos en Linux usando dos comandos importantes:localizar y encontrar.

Incluso si la opción se presentara individualmente, debe recordar que se pueden combinar para poder especificar aún más los archivos que está buscando.

Como siempre, si está interesado en la administración del sistema Linux, tenemos una sección completa dedicada a Linux en nuestro sitio web.


Linux
  1. Encuentra archivos y directorios en Linux con el comando de búsqueda

  2. Cómo encontrar los principales directorios y archivos (espacio en disco) en Linux

  3. Encuentra los archivos y directorios más grandes en Linux

  4. Linux:¿directorios estándar y/o comunes en sistemas operativos Unix/linux?

  5. Comandos de búsqueda de Linux

Cómo cambiar el nombre de archivos y directorios en Linux

Comando Ls en Linux (Lista de archivos y directorios)

Cómo comprimir archivos y directorios en Linux

3 formas de encontrar archivos y directorios en Linux

Dos comandos para encontrar archivos y directorios en Debian 11 fácilmente

Cómo encontrar y eliminar directorios vacíos en Linux

    Comodín Descripción Ejemplo Partidos No coincide
    * coincide con cualquier número de caracteres incluyendo ninguno devco* devconnected, devcoco, devco.com devdevco,
    [abc] coincide con un carácter dado en el paréntesis [ab]ab aab, bab cab
    [a-z] coincide con un carácter del rango (dependiente de la configuración regional) dado entre paréntesis runlevel[0-9] runlevel1, runlevel2, runlevel6 niveles de ejecución, nivel de ejecución