# Ricercare file

## Comando find

Il comando principale per la ricerca di file in un sistema Unix/Linux è `find`. Questo comando consente di localizzare file e directory in base a vari criteri.

### Opzioni per la ricerca di file

Le opzioni per specificare il tipo di file da cercare includono:

- `-type f`: per cercare file regolari
- `-type d`: per cercare directory
- `-type l`: per cercare link simbolici

Un esempio:

```bash
find . -name "example" -type f
```

### Criteri di ricerca aggiuntivi

Oltre al tipo di file, è possibile utilizzare ulteriori criteri per affinare la ricerca:

- `-iname`: consente di cercare in base al nome del file, ignorando la distinzione tra lettere maiuscole e minuscole
- `-not`: restituisce i risultati che non corrispondono al criterio specificato
- `-maxdepth N`: limita la ricerca nelle sottodirectory fino a un massimo di *N livelli* di profondità

### Ricerca per dimensione

Il comando `find` permette anche di cercare file in base alla loro dimensione:

```bash
find . -iname "example" -size 2G -type f
```

Le opzioni per specificare la dimensione includono:

- `-size 100M`: per cercare file che corrispondono esattamente a 100 MB
- `-size +100M`: per cercare file più grandi di 100 MB
- `-size -20M`: per cercare file più piccoli di 20 MB
- `-size +2G`: per cercare file più grandi di 2 GB

### Esecuzione di azioni sui risultati

È possibile eseguire azioni sui risultati ottenuti dalla ricerca utilizzando l'opzione `-exec`. Ad esempio, per modificare i permessi di tutti i file con estensione `.conf`, si può utilizzare il seguente comando:

```bash
find . -name "*.conf" -exec chmod 644 '{}' \;
```

Questa sintassi consente di applicare comandi a ciascun file trovato, sostituendo `{}` con il nome del file corrente.
