# Comandi per la ricerca

## find

`find` è utilizzato per ricercare file su sistemi operativi Linux. Per limitare la ricerca alla sola directory corrente, è necessario utilizzare l'opzione `-maxdepth 1`. Il parametro `-mount` può essere impiegato per evitare che find scenda all'interno dei filesystem montati. Per restringere la ricerca a specifici filesystem, si utilizza invece il parametro -`fstype`.

### Attributi di ricerca

Il comando find offre diversi attributi di ricerca che consentono di filtrare i risultati in base a criteri specifici:

- `user USERNAME`: seleziona i file di proprietà dell’utente specificato (USERNAME)
- `group GROUPNAME`: seleziona i file appartenenti al gruppo indicato (GROUPNAME)
- `-readable`, `-writable`, `-executable`: identifica rispettivamente i file leggibili, scrivibili o eseguibili dall’utente corrente
- `perm NNN`: restringe la ricerca ai file con permessi esattamente corrispondenti al valore ottale NNN
- `empty`: individua file e directory vuoti
- `size N`: filtra i file in base alla dimensione. I prefissi`+` e `-` indicano rispettivamente *più grande d* e *più piccolo di*. Ad esempio, `-size -10M` restituisce tutti i file di dimensione inferiore a 10 MB

### Ricerche temporali

È possibile ricercare file in base a criteri temporali:

- `-amin N`, `-cmin N`, `-mmin N`: utilizzati per trovare file a cui è stato effettuato l'`a`ccesso, che hanno subito modifiche agli attributi o che sono stati `m`odificati N minuti fa, rispettivamente
- `-atime N`, `-ctime N`, `-mtime N`: operano in modo analogo ai parametri precedenti, ma utilizzano come unità di misura `N*24 h` (giorni).

## locate

A differenza di find, il comando `locate` non esegue la ricerca direttamente nel filesystem, ma consulta un database costruito eseguendo il comando `updatedb`. Questo approccio consente di ottenere risultati molto rapidi, ma potrebbe comportare imprecisioni a seconda dell'ultimo aggiornamento del database.

## Trovare i binari

Il comando `which` è utile per visualizzare il percorso assoluto di un eseguibile. Un comando simile è `type`, che fornisce informazioni su un binario, incluso il suo percorso e il tipo di file.

```bash
which top
/usr/bin/top

type top
top is /usr/bin/top
```
