GNU/Linux >> Linux Esercitazione >  >> Linux

Comando di localizzazione Linux per principianti (8 esempi)

Sebbene la ricerca sia senza dubbio una delle utility da riga di comando più popolari e potenti per la ricerca di file in Linux, non è abbastanza veloce per le situazioni in cui hai bisogno di risultati istantanei. Se desideri cercare un file sul tuo sistema tramite la riga di comando e la velocità è la priorità assoluta, puoi utilizzare un altro comando:Individua .

In questo tutorial parleremo di individuare comando utilizzando esempi di facile comprensione. Tieni presente che tutte le istruzioni/esempi qui menzionati sono stati testati su Ubuntu 16.04 LTS e localizza la versione che abbiamo utilizzato è 0.26.

1. Come usare il comando locate in Linux

Il comando locate è molto facile da usare. Tutto quello che devi fare è passargli il nome del file che vuoi cercare.

locate [filename]

Ad esempio, se voglio cercare tutti i nomi di file che contengono la stringa 'dir2', posso farlo usando locate nel modo seguente:

Nota :Il comando 'locate dir2' (senza asterischi) farà anche come locate implicitamente sostituisce il nome passato (ad esempio NAME) con *NAME*.

2. Come funziona il comando locate, o perché è così veloce

Il motivo per cui locate è così veloce è perché non legge il file system per il file cercato o il nome della directory. In realtà si riferisce a un database (preparato dal comando updatedb ) per trovare ciò che l'utente sta cercando e in base a tale ricerca, ne produce l'output.

Sebbene questo sia un buon approccio, ha la sua parte di svantaggi. Il problema principale è che dopo la creazione di ogni nuovo file o directory sul sistema, è necessario aggiornare il database dello strumento affinché funzioni correttamente. In caso contrario, il comando non sarà in grado di trovare file/directory creati dopo l'ultimo aggiornamento del database.

Ad esempio, se provo a trovare file con nomi contenenti la stringa "tosearch" nella directory "Download" del mio sistema, trova comando produce un risultato nell'output:

Ma quando provo a eseguire la stessa ricerca usando il comando locate, non produce alcun output.

Ciò significa che il database in cui individua le ricerche non è stato aggiornato dopo la creazione del file nel sistema. Quindi, aggiorniamo il database, cosa che può essere fatta usando updatedb comando. Ecco come farlo:

sudo updatedb

E ora, quando eseguo di nuovo lo stesso comando locate, mostra i file nell'output:

Allo stesso modo, dopo la rimozione di un file o di una directory, è necessario assicurarsi che il database locate sia stato aggiornato, altrimenti il ​​comando continuerà a mostrare il file nel suo output durante la ricerca.

3. Come fare in modo che locate stampi il numero o il conteggio delle voci corrispondenti nell'output

Come abbiamo visto, il comando locate produce nell'output il nome dei file abbinati insieme ai loro percorsi completi o assoluti. Ma se lo desideri, puoi fare in modo che lo strumento sopprima tutte queste informazioni e stampi semplicemente il numero o il conteggio delle voci corrispondenti. Questo può essere fatto usando il -c opzione della riga di comando.

4. Come forzare la ricerca per stampare solo le voci che corrispondono a file esistenti

Come abbiamo già discusso in precedenza in questo articolo, se un file viene rimosso dal sistema, finché non aggiorni nuovamente il database locate, il comando continuerà a mostrare quel nome file nell'output. Per questo caso specifico, tuttavia, puoi saltare l'aggiornamento del database e avere comunque risultati corretti nell'output utilizzando -e opzione della riga di comando.

Ad esempio, ho rimosso il file "filetosearch.txt" dal mio sistema. Ciò è stato confermato dal comando trova, che non è stato più in grado di cercare nel file:

Ma quando ho eseguito la stessa operazione utilizzando locate, mostrava ancora il file nell'output:

E sappiamo perché, perché il database di locate non è stato aggiornato dopo l'eliminazione del file. Tuttavia, utilizzando il -e l'opzione ha funzionato:

Ecco cosa dice la pagina man di locate su questa opzione:"Stampa solo voci che fanno riferimento a file esistenti al momento dell'esecuzione di locate."

5. Come fare in modo che locate ignori le distinzioni tra maiuscole e minuscole

Per impostazione predefinita, l'operazione di ricerca eseguita dal comando locate fa distinzione tra maiuscole e minuscole. Ma puoi forzare lo strumento a ignorare le distinzioni tra maiuscole e minuscole usando -i opzione della riga di comando.

Ad esempio, ho due file sul mio sistema, denominati "newfiletosearch.txt" e "NEWFILETOSEARCH.txt". Quindi, come puoi vedere, i nomi dei file sono gli stessi, solo che i loro casi sono diversi. Se chiedi individuare per cercare, diciamo, "*tosearch*", quindi mostrerà solo il nome minuscolo nel suo output:

Ma l'utilizzo dell'opzione -i della riga di comando forza il comando a ignorare il caso e nell'output vengono prodotti entrambi i nomi di file:

6. Come separare le voci di output con ASCII NUL

Per impostazione predefinita, le voci di output prodotte dal comando locate sono separate utilizzando il carattere di nuova riga (\n). Ma se vuoi, puoi cambiare il separatore e avere l'ASCII NUL invece di una nuova riga. Questo può essere fatto usando -0 opzione della riga di comando.

Ad esempio, ho eseguito lo stesso comando che abbiamo usato nell'ultima sezione sopra, ma ho aggiunto l'opzione della riga di comando -0:

Quindi puoi vedere che il separatore di nuova riga non è più presente:è stato sostituito con NUL.

7. Come visualizzare le informazioni sul database di localizzazione

Nel caso in cui desideri sapere quale database sta utilizzando, oltre ad altre statistiche sul database, usa il -S opzione della riga di comando.

8. Come cercare un nome file esatto usando locate

Per impostazione predefinita, quando si cerca un nome file utilizzando locate, il nome che si passa, ad esempio NAME, viene implicitamente sostituito da *NAME*. Ad esempio, se cerco un nome file 'testfile', tutti i nomi corrispondenti a *testfile* vengono prodotti nell'output:

Ma cosa succede se il requisito è cercare file con nomi che corrispondono esattamente a "testfile"? Bene, in questo caso, dovrai usare espressioni regolari, che possono essere abilitate usando il -r opzione della riga di comando. Quindi, ecco come puoi cercare solo 'testfile' usando espressioni regolari:

locate -r /testfile$

Se non conosci le espressioni regolari, vai qui.

Conclusione

Locate offre molte più opzioni, ma quelle che abbiamo discusso qui dovrebbero essere sufficienti per darti un'idea di base sull'utilità della riga di comando, nonché per iniziare. Ti consigliamo di provare prima tutte le opzioni descritte qui sulla tua macchina Linux, quindi passare ad altre che puoi trovare nella pagina man dello strumento.

In caso di dubbi o domande, non esitare a lasciare un commento.


Linux
  1. 10 Esempi di comandi "rm" per principianti Linux

  2. Tutorial sul comando cd di Linux per principianti (8 esempi)

  3. Tutorial sul comando della data di Linux per principianti (8 esempi)

  4. Comando killall Linux per principianti (8 esempi)

  5. individuare Esempi di comandi in Linux

Tutorial sui comandi Linux nm per principianti (10 esempi)

Esercitazione sui comandi OD Linux per principianti (6 esempi)

Linux w Command Tutorial per principianti (5 esempi)

Tutorial sui comandi Linux ss per principianti (8 esempi)

16 Esempi pratici di comando Linux LS per principianti

Spiegazione del comando Linux mv per principianti (8 esempi)