# Guía de Comando `find` - Especialidad para Sysadmin

## Introudcción

Como sysadmin experimentado, sabes que `find` es una navaja suiza. Aquí tienes los patrones más útiles, organizados por casos de uso prácticos:

## Limpieza por Antigüedad

**Archivos más antiguos de X días:**

```bash
# Ver qué se borraría (siempre prueba primero)
find /ruta -type f -mtime +30 -ls

# Borrar archivos de más de 30 días
find /ruta -type f -mtime +30 -delete

# Más seguro: con confirmación
find /ruta -type f -mtime +30 -ok rm {} \;
```

**Por horas (útil para logs):**

```bash
# Archivos de más de 24 horas
find /var/log -type f -mmin +1440 -delete

# De más de 2 horas
find /tmp -type f -mmin +120 -delete
```

## Limpieza por Tamaño

**Archivos grandes:**

```bash
# Archivos de más de 100MB
find /ruta -type f -size +100M -ls

# Mayores de 1GB
find /ruta -type f -size +1G -delete

# Combinar: grandes Y antiguos
find /ruta -type f -size +50M -mtime +7 -delete
```

**Archivos vacíos:**

```bash
# Archivos de 0 bytes
find /ruta -type f -empty -delete

# Directorios vacíos
find /ruta -type d -empty -delete
```

## Patrones de Limpieza Combinados

**El combo perfecto para /tmp:**
```bash
find /tmp -type f \( -mtime +7 -o -size +500M \) -delete
```

**Logs rotativos:**
```bash
# Solo .log antiguos, preservar los .gz
find /var/log -name "*.log" -mtime +30 -delete
```

**Core dumps y temporales:**
```bash
# Múltiples patrones
find /ruta \( -name "core.*" -o -name "*.tmp" -o -name "*.temp" \) -mtime +1 -delete
```

## Modificadores de Tiempo Útiles

- `-mtime +N` : modificado hace MÁS de N días
- `-mtime -N` : modificado hace MENOS de N días  
- `-mtime N` : modificado hace EXACTAMENTE N días
- `-atime` : último acceso
- `-ctime` : cambio de metadatos

## Consejos de Veterano

**Siempre prueba primero:**

```bash
# Reemplaza -delete por -ls para ver qué haría
find /ruta -criteria -ls
```

**Para grandes volúmenes, usa xargs:**

```bash
find /ruta -type f -mtime +30 -print0 | xargs -0 rm
```

**Excluir directorios específicos:**

```bash
find /var -path "/var/lib" -prune -o -type f -mtime +30 -delete
```

La clave está en la combinación de criterios. El `find` permite ser muy preciso, pero siempre con la prudencia que dan los años de experiencia.

##### Aviso
Esta documentación y su contenido, no implica que funcione en tu caso o determinados casos. 
También implica que tienes conocimientos sobre lo que trata, y que en cualquier caso tienes copias de seguridad.
El contenido el contenido se entrega, tal y como está, sin que ello implique ningún obligación ni responsabilidad por parte de [Castris](https://castris.com)

Si necesitas soporte profesional puedes contratar con Castris [soporte profesional](https://intranet.castris.com/store/soporte-profesional).