Qual è la differenza tra "individuare" e "trova" in Linux?


Risposte:


38

findricerche nel sistema reale. È più lento ma sempre aggiornato e ha più opzioni (dimensioni, tempo di modifica, ...)

locateutilizza un database (comando updatedb) precedentemente creato . È molto più veloce, ma utilizza un database "più vecchio" e cerca solo nomi o parti di essi.

In ogni caso, man finde man locateti aiuterà ulteriormente.


1
... e updatedbfare all'incirca qualcosa del genere find / -type f | gzip > locate.gz.
F. Hauri,

10
unix.stackexchange.com/questions/60205/… risponde a questa domanda in modo più dettagliato.
pazzo per il natty

3

Entrambi i comandi locatee findtroveranno un file, ma funzionano in modi abbastanza diversi.

locate funzionerà in modalità offline:

  • Per una semplice spiegazione, il database di indicizzazione dei file nel sistema Unix chiamato slocate elencherà le posizioni di tutti i file forniti con il sistema Unix. Quando esegui locate, utilizzerà quel database per cercare un determinato file. Il problema locateè che se hai appena creato un file che ora vuoi cercare, individuare non funzionerà perché il database slocate non è aggiornato. Per ovviare a questo problema, è possibile utilizzare updatedbper aggiornare il database slocate . L'esecuzione di locatenuovo ora troverà il file appena creato. Pertanto, molti amministratori di sistema Linux utilizzano un cronlavoro per aggiornare regolarmente il database slocate .

find funzionerà in modalità online / "in tempo reale".

  • In realtà andrà a cercare tutte le directory per trovare il file specifico specificato ed esaminerà ogni file uno per uno. Pertanto, richiede molte chiamate I / O.

Quindi, in base alla natura, è chiaro che individuare è più veloce di trovare ma trovare è in tempo reale.

Spero che questo possa aiutare a chiarire l'idea. Ti auguro il meglio. :)


0

locate guarda semplicemente il suo database e riporta la posizione del file.

find non utilizza un database, attraversa tutte le directory e le relative sottodirectory e cerca i file corrispondenti al criterio specificato.


0

Un'alternativa all'utilizzo di find è il comando Locate. Questo comando è spesso più veloce e può facilmente cercare nell'intero file system. È possibile installare il comando con apt-get:

sudo apt-get update
sudo apt-get install mlocate

Il motivo per cui individuare è più veloce di find è perché si basa su un database dei file sul filesystem. Il database viene in genere aggiornato una volta al giorno con uno script cron, ma è possibile aggiornarlo manualmente digitando:

sudo updatedb

Esegui questo comando ora. Ricorda che il database deve essere sempre aggiornato se vuoi trovare file acquisiti o creati di recente.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.