Sto cercando di localizzare tutte le copie del example.filename
mio server FreeBSD. Qual è il modo migliore / più semplice / più efficiente per farlo?
Sto cercando di localizzare tutte le copie del example.filename
mio server FreeBSD. Qual è il modo migliore / più semplice / più efficiente per farlo?
Risposte:
find / -name example.filename
locate filename
Molto più veloce di find
, se stai eseguendo il servizio di individuazione, e trova solo i file che esistevano updatedb
all'ultima esecuzione (di solito la notte prima del controllo di un lavoro cron).
È possibile eseguire updatedb
a mano, ma che è anche più lento rispetto alla find
Cletus suggerisce , e richiede root. A volte aggiorno il database a mano dopo aver installato un sacco di nuove cose.
find /
o su un grande albero più di una volta alla settimana, locate
probabilmente vale la pena eseguire il servizio, perché locate(1)
è molto più veloce.
sudo periodic weekly
aggiorna il locate
database. Eseguilo dopo ogni installazione o download che può contenere i file che desideri.
Se hai installato Locate (aka Slocate), allora
locate example.filename
individuare esegue un processo cron ogni notte che reindicizza tutti i file sul computer. Non è sempre aggiornato per questo motivo.
A volte vuoi trovare file a un livello di directory specifico. In questo caso può essere conveniente usare i caratteri jolly della shell:
ls /data/*/example.filename
Ovviamente questo funziona solo se si dispone di una struttura di directory rigida.
locate
Come altri hanno già detto, locate
è il modo rapido per trovare un file. Questo comando utilizza un indice precompilato dei nomi di file e cartelle. Questo database di nomi viene cercato, anziché eseguire la scansione del file system.
locate example.filename
Per non distinguere tra maiuscole e minuscole, aggiungi -i
.
locate -i eXAmPle.FileName
locate
Database di aggiornamentoIl database utilizzato da locate
deve essere aggiornato. Dopo aver eseguito un'installazione o un download che potrebbe contenere il file desiderato, è necessario aggiornare il locate
database.
Il locate
database verrà eventualmente aggiornato automaticamente dal tuo sistema FreeBSD. C'è una serie settimanale di faccende che include questa attività. Queste faccende sono elencate nello /etc/periodic/weekly/310.locate
script.
Il modo più semplice e sicuro per forzare l'aggiornamento anticipato del locate
database è forzare subito il set settimanale di faccende.
sudo periodic weekly
Oppure potresti anche forzare tutte le normali faccende da svolgere. Potresti volerlo fare subito dopo aver configurato un nuovo sistema FreeBSD.
sudo periodic daily weekly monthly
Se usi altre strade per aggiornare il locate
database, potresti ricevere un messaggio sulla sicurezza, rivelando i nomi di tutti i file del tuo sistema a qualsiasi utente sul sistema FreeBSD. L'uso del periodic
percorso evita questo problema.
Se il database di individuazione è aggiornato, allora basta:
locate example.filename
A volte lo faccio
find . | grep example.filename
probabilmente enormemente inefficiente comunque.