Ti manca semplicemente il predicato che dice ciò che stai cercando (ad es. -name
.)
Per trovare nella directory home per nome:
find ~ -name \*.pdf
Si noti che il carattere jolly *
deve essere scappato in modo che la shell non la interpreti prima che trovi le sue mani su di essa. utilizzando '*.pdf'
e "*.pdf"
avrà lo stesso effetto di \*.pdf
.
Per trovare case-insensitively:
find ~ -iname \*.pdf
Per potare i risultati solo sui file (l'espressione del nome probabilmente si prenderà cura di questo per te, ma nel caso tu abbia delle directory con nomi strani):
find ~ -type f -iname \*.pdf
Per essere sicuro che la ricerca segua i collegamenti simbolici (di solito io stesso faccio questo quando faccio ricerche):
find ~ -follow -type f -iname \*.pdf
Per fare qualcosa con i file che hai trovato: puoi scaricarli in un file usando il reindirizzamento stdout (ad es. > filename
alla fine), o usare il -exec
opzione per eseguire un comando (vedere la pagina man per i dettagli). Quest'ultimo esegue un comando su ogni file alla volta, però. è spesso più veloce lasciare il xargs
comando passare i file trovati come argomenti a un altro comando, tutto in una volta o grandi blocchi alla volta. Ad esempio, per greps ad-hoc (ma non indicizzati) tramite i file di intestazione:
find ~ -follow -type f -name \*.h | xargs grep -nH "identifier"
E un'estensione finale, per fare in modo che quest'ultimo comando funzioni correttamente se hai file e amp; directory con spazi in loro:
find ~ -follow -type f -name \*.h -print0 | xargs -0 grep -nH "identifier"
find
è tutt'altro che inutile.