GNU/Linux >> Tutoriales Linux >  >> Linux

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

Independientemente de cuán organizado decida ser, parece que siempre hay momentos en los que simplemente no puedo ubicar un archivo. A veces es porque no puedo recordar el nombre del archivo en primer lugar. Otras veces, sé el nombre, pero no recuerdo dónde decidí guardarlo. Incluso hay momentos en los que necesito un archivo que no creé en primer lugar. Sin embargo, sin importar cuál sea el dilema, sé que en un sistema POSIX, siempre tengo el find comando.

Más recursos de Linux

  • Hoja de trucos de los comandos de Linux
  • Hoja de trucos de comandos avanzados de Linux
  • Curso en línea gratuito:Descripción general técnica de RHEL
  • Hoja de trucos de red de Linux
  • Hoja de trucos de SELinux
  • Hoja de trucos de los comandos comunes de Linux
  • ¿Qué son los contenedores de Linux?
  • Nuestros últimos artículos sobre Linux

Instalando buscar

El find El comando está definido por la especificación POSIX, que crea el estándar abierto por el cual se miden los sistemas POSIX (incluidos Linux, BSD y macOS). En pocas palabras, ya tiene find instalado siempre que esté ejecutando Linux, BSD o macOS.

Sin embargo, no todos los find los comandos son exactamente iguales. El GNU find El comando, por ejemplo, tiene funciones que BSD o Busybox o Solaris find Es posible que el comando no tenga o tenga, pero se implementa de manera diferente. Este artículo usa GNU find del paquete findutils porque está disponible y es bastante popular. La mayoría de los comandos demostrados en este artículo funcionan con otras implementaciones de find , pero si prueba un comando en una plataforma que no sea Linux y obtiene resultados inesperados, intente descargar e instalar la versión GNU.

Buscar un archivo por nombre

Puede ubicar un archivo por su nombre de archivo proporcionando el nombre de archivo completo o partes del nombre de archivo mediante expresiones regulares. El find El comando requiere la ruta al directorio en el que desea buscar, opciones para especificar qué atributo está buscando (por ejemplo, -name para un nombre de archivo que distingue entre mayúsculas y minúsculas) y luego la cadena de búsqueda. De forma predeterminada, su cadena de búsqueda se trata literalmente:find El comando busca un nombre de archivo que sea exactamente la cadena que ingresa entre comillas, a menos que use la sintaxis de expresiones regulares.

Suponga que su directorio Documentos contiene cuatro archivos:Foo , foo , foobar.txt y foo.xml . Aquí hay una búsqueda literal de un archivo con el nombre "foo":

$ find ~ -name "foo"
/home/tux/Documents/examples/foo

Puede ampliar su búsqueda haciendo que no distinga entre mayúsculas y minúsculas con -iname opción:

$ find ~ -iname "foo"
/home/tux/Documents/examples/foo
/home/tux/Documents/examples/Foo

Comodines

Puede utilizar caracteres comodín de shell básicos para ampliar su búsqueda. Por ejemplo, el asterisco (* ) representa cualquier número de caracteres:

$ find ~ -iname "foo*"
/home/tux/Documents/examples/foo
/home/tux/Documents/examples/Foo
/home/tux/Documents/examples/foo.xml
/home/tux/Documents/examples/foobar.txt

Un signo de interrogación (? ) representa un solo carácter:

$ find ~ -iname "foo*.???"
/home/tux/Documents/examples/foo.xml
/home/tux/Documents/examples/foobar.txt

Esta no es una sintaxis de expresión regular, por lo que el punto (. ) representa un punto literal en este ejemplo.

Expresiones regulares

También puede utilizar expresiones regulares. Como con -iname y -name , hay una opción que distingue entre mayúsculas y minúsculas y otra que no distingue entre mayúsculas y minúsculas. A diferencia del -name y -name opciones, sin embargo, un -regex y -iregex la búsqueda se aplica a la ruta completa , no solo el nombre del archivo. Eso significa que si busca foo , no obtiene resultados porque foo no coincide con /home/tux/Documents/foo . En su lugar, debe buscar la ruta completa o usar una secuencia de comodines al comienzo de su cadena:

$ find ~ -iregex ".*foo"
/home/tux/Documents/examples/foo
/home/tux/Documents/examples/Foo

Encuentre un archivo modificado en la última semana

Para encontrar un archivo que modificó por última vez la semana pasada, use -mtime opción junto con un número (negativo) de días en el pasado:

$ find ~ -mtime -7
/home/tux/Documents/examples/foo
/home/tux/Documents/examples/Foo
/home/tux/Documents/examples/foo.xml
/home/tux/Documents/examples/foobar.txt

Encuentre un archivo modificado dentro de un rango de días

Puede combinar -mtime opciones para ubicar un archivo dentro de un rango de días. Para el primer -mtime argumento, proporcione el número de días más reciente que podría haber modificado el archivo y, para el segundo, proporcione el mayor número de días. Por ejemplo, esta búsqueda busca archivos con tiempos de modificación de más de un día en el pasado, pero no más de siete:

$ find ~ -mtime +1 -mtime -7

Limitar una búsqueda por tipo de archivo

Es común optimizar los resultados de find especificando el tipo de archivo que está buscando. No debe usar esta opción si no está seguro de lo que está buscando, pero si sabe que está buscando un archivo y no un directorio, o un directorio pero no un archivo, entonces esta puede ser una gran filtro a utilizar. La opción es -type , y sus argumentos son un código de letras que representa algunos tipos diferentes de datos. Los más comunes son:

  • d - directorio
  • f - archivo
  • l - enlace simbólico
  • s - enchufe
  • p - tubería con nombre (usada para FIFO)
  • b - bloque especial (generalmente una designación de disco duro)

Estos son algunos ejemplos:

$ find ~ -type d -name "Doc*"
/home/tux/Documents
$ find ~ -type f -name "Doc*"
/home/tux/Downloads/10th-Doctor.gif
$ find /dev -type b -name "sda*"
/dev/sda
/dev/sda1

Ajustar alcance

El find El comando es recursivo por defecto, lo que significa que busca resultados en los directorios de directorios contenidos en directorios (y así sucesivamente). Esto puede ser abrumador en un sistema de archivos grande, pero puede usar -maxdepth opción para controlar qué tan profundo en la estructura de su carpeta desea find descender:

$ find /usr -iname "*xml" | wc -l
15588
$ find /usr -maxdepth 2 -iname "*xml" | wc -l
15

Alternativamente, puede establecer la profundidad mínima de recursividad con -mindepth :

$ find /usr -mindepth 8 -iname "*xml" | wc -l
9255

Descargar la hoja de trucos

Este artículo solo cubre las funciones básicas de find . Es una gran herramienta para buscar a través de su sistema, pero también es una interfaz muy útil para el poderoso comando Parallel. Hay muchas razones para aprender find , así que descargue nuestro find gratuito hoja de trucos para ayudarlo a aprender más sobre el comando.


Linux
  1. Copie y pegue en la línea de comandos de Linux con xclip

  2. Encuentra archivos y directorios en Linux como un profesional

  3. Uso del comando de búsqueda de Linux:uso con ejemplos

  4. Encuentre un archivo con los comandos de búsqueda y localización en Linux

  5. Cómo usar el comando find de Linux para buscar archivos

Comando Find de Linux con ejemplos prácticos

Cómo encontrar archivos con el comando fd en Linux

Encuentre archivos y directorios en Linux fácilmente

Tutorial de comando de búsqueda de Linux (con ejemplos)

Cómo encontrar archivos con docenas de criterios con el comando Bash Find

Conceptos básicos de la línea de comandos de Linux:trabajar con archivos y directorios