---
title: "Buscar archivos en Linux con el comando find"
description: "Buscar archivos en Linux desde la línea de comandos es fácil usando el comando find . Este comando de Linux usa un sencillo mecanismo condicional para filtrar objetos. Veamos cómo se usa el comando fi..."
url: https://www.stackscale.com/es/blog/comando-find-linux/
date: 2022-04-28
modified: 2023-11-03
author: "Marketing Stackscale"
image: https://www.stackscale.com/wp-content/uploads/2022/04/find-command-linux-stackscale.jpg
categories: ["Sistemas"]
tags: ["Linux"]
type: post
lang: es
---

# Buscar archivos en Linux con el comando find

Buscar archivos en Linux desde la línea de comandos es fácil **usando el comando `find`**. Este comando de Linux usa un sencillo mecanismo condicional para filtrar objetos. Veamos cómo se usa el comando `find` en Linux para encontrar un archivo desde la línea de comandos.

## Comando find en Linux

El comando `find` se usa para localizar archivos en [Linux](https://www.stackscale.com/es/blog/linux/), basándose en los criterios especificados por el usuario. La sintaxis básica del comando es la siguiente:

find -opciones /ruta expresión

### Atributos del comando find

- `-opciones`: las opciones o parámetros de búsqueda permiten controlar el comportamiento y el método de optimización del proceso de `find`.
- `/ruta`: define la ruta de acceso al directorio a partir de la cual el comando `find` empezará a filtrar.
- `expresión`: define las acciones a realizar para crear un resultado.

## Opciones del comando find

### Localizar archivos por nombre en Linux

Para encontrar archivos por nombre en un directorio y todos sus subdirectorios, hay que introducir el siguiente comando en la línea de comandos:

find /ruta -name nombredelarchivo

### Localizar archivos por extensión

Para encontrar archivos por extensión en un directorio y todos sus subdirectorios, hay que introducir el siguiente comando en la línea de comandos:

find /ruta -name *.html

### Localizar archivos en el directorio actual

Para encontrar archivos en el directorio actual, hay que introducir el siguiente comando en la línea de comandos:

find . -name nombredelarchivo.html

### Localizar archivos modificados durante un período de tiempo

Para encontrar archivos que hayan sido modificados durante la semana anterior, hay que introducir el siguiente comando en la línea de comandos:

find /ruta -mtime 7 “.html”

### Localizar archivos modificados durante un período de tiempo por un usuario específico

Para encontrar archivos que hayan sido modificados durante la semana anterior por un usuario en particular, hay que introducir el siguiente comando en la línea de comandos:

find /ruta -user nombredeusuario -mtime 7 “.html”

### Limitar la búsqueda a un número específico de subdirectorios

Para limitar la búsqueda a una cantidad específica de subdirectorios, hay que añadir la opción `-maxdepth X` al comando:

find -maxdepth 3 /ruta -name *.html

### Ignorar mayúsculas y minúsculas

Para hacer una búsqueda ignorando mayúsculas y minúsculas, hay que añadir la opción `-iname` al comando:

find /ruta -iname *.html

### Buscar archivos

Para buscar archivos exclusivamente, hay que añadir la opción `-type f` al comando:

find /ruta -type f -name “*.html”

### Buscar directorios

Para buscar directorios exclusivamente, hay que añadir la opción `-type d` al comando:

find /ruta -type d -name “*.html”

### Seguir y mostrar enlaces simbólicos

Dado que el comando `find` ignora los enlaces simbólicos por defecto, hay que añadir la opción `-L` al comando para seguirlos y mostrarlos:

find -L /ruta -name *.html

### Localizar archivos por tamaño

Para encontrar archivos de más de 500 MB en un directorio y todos sus subdirectorios, hay que introducir el siguiente comando en la línea de comandos:

find /ruta -size +500M

### Combinar dos condiciones o filtros

Por ejemplo, para filtrar archivos de entre 500 MB y 1 GB en un directorio y todos sus subdirectorios, hay que introducir el siguiente comando en la línea de comandos:

find /ruta -size +500M -and -size -1G

### Filtrar por al menos una de las condiciones que se especifican

Por ejemplo, para filtrar archivos por una de las extensiones indicadas en un directorio y todos sus subdirectorios, hay que introducir el siguiente comando en la línea de comandos:

find /ruta -name *.docx -or -name *.odt

### Excluir la segunda condición

Por ejemplo, para excluir una extensión de la búsqueda en un directorio y todos sus subdirectorios, hay que introducir el siguiente comando en la línea de comandos:

find /ruta -name *.docx -not -name *.odt

| **Opción o parámetro de búsqueda** | **Uso** |
| --- | --- |
| `-name` | Filtrar archivos por nombre. |
| `-iname` | Hacer una búsqueda por nombre sin tener en cuenta mayúsculas y minúsculas para localizar un archivo. |
| `.` | Buscar en el directorio actual. |
| `-type` | Filtrar archivos por tipo de archivo. |
| `-user` | Filtrar archivos por usuario. |
| `-mtime` | Filtrar archivos limitando el período de tiempo de su modificación. |
| `-maxdepth` | Limitar la búsqueda a un número concreto de subdirectorios. |
| `-L` | Incluir los enlaces simbólicos en la búsqueda. |
| `-size` | Filtrar por tamaño de archivo. |
| `-and` | Se sitúa entre dos condiciones para indicar que es necesario incluir ambas. |
| `-or` | Se sitúa entre dos condiciones para indicar que es necesario filtrar por al menos una de las condiciones. |
| `-not` | Se sitúa entre dos condiciones para indicar que es necesario ignorar la segunda condición.  |

## Optimizaciones del comando find 

Estas son las tres fases de optimización para mejorar el filtrado cuando se usa el comando `find` en Linux.

### -O1: por defecto

-O1 es la configuración estándar. Permite que `find` empiece a filtrar por nombre de archivo antes de ejecutar cualquier otro test.

find -O1 /ruta -name "*.html"

### -O2: nombre de archivo y tipo de archivo

-O2 permite que `find` filtre por nombre de archivo y tipo de archivo antes de pasar a los filtros que requieran más recursos.

find -O2 /ruta -name "*.html"

### -O3: eficiencia y probabilidad de éxito

-O3 permite que `find` reorganice automáticamente los filtros para priorizar la eficiencia y la probabilidad de éxito.

find -O3 /ruta -name "*.html"

## Búsquedas basadas en contenido: Find + Grep

El comando `find` de Linux solo filtra archivos en base a nombres de archivo y metadatos. Así que, para buscar archivos en base a su contenido, es necesario añadir el comando `grep` a la línea de comandos:

find /ruta -type f -exec grep “contenido” ‘{}’ \; -print

- `-exec`: es un comando que permite al comando `find` ejecutar una tarea específica una vez en cada archivo que se ajuste a la búsqueda.
- `‘{}’`: las llaves son el marcador de posición de los resultados que se ajustan a la búsqueda.
- `\;`: la opción `-exec` se cierra con una barra invertida y un punto y coma para evitar que pueda ser interpretada por el *shell*.
- `-print`: muestra los resultados en la pantalla.
