Se utilizzate Ubuntu ed avete continuamente bisogno di cercare un file nella vostra sconfinata collezione di mp3, vi consiglio di utilizzare uno dei tre principali software di indicizzazione e ricerca disponibili nativamente per l'ambiente desktop Gnome: Tracker, Beagle o Google Desktop. Ma se questi strumenti vi sembrano troppo pesanti o non avete bisogno di indicizzare “milioni” di file, potete utilizzare la Shell ed i comandi locate e find per cercare file e directory.
Locate
La sintassi del comando locate è molto semplice
Il pregio principale del comando locate è la sua velocità. Questo comando infatti, non effettua una ricerca in tempo reale dei file presenti sul disco ma utilizza un database dove sono memorizzate tutte le modifiche che avvengono sui filesystems del nostro sistema.
Il database viene aggiornato tramite il comando
[1] In informatica, si parla di pattern relativamente ad algoritmi specifici, a volte ricorsivi, che seguono uno schema prestabilito, come ad esempio le funzioni di ricerca in una stringa. In tale contesto specifico, il pattern rappresenta anche la stringa (o insieme di stringhe) da ricercare. Da Wikipedia, l'enciclopedia libera.
[2] Uno Uniform Resource Identifier (URI, acronimo più generico rispetto ad "URL") è una stringa che identifica univocamente una risorsa generica che può essere un indirizzo Web, un documento, un'immagine, un file, un servizio, un indirizzo di posta elettronica, ecc. Da Wikipedia, l'enciclopedia libera.
[3] Nei sistemi operativi Unix e Unix-like, il comando cron consente la pianificazione di comandi, ovvero consente di registrarli presso il sistema per essere poi mandati in esecuzione periodicamente. Da Wikipedia, l'enciclopedia libera.
Find
Il comando find permette di ricercare files e directories, oltre che in base al nome, in base a molti parametri (la data di creazione, i permessi di accesso ai files, etc...) al fine di ottimizzare l'operazione di ricerca.
La sintassi del comando find ha la seguente struttura:
La coppia di caratteri {} indica l'elenco dei file trovati, mentre i caratteri \; devono sempre terminare l'opzione -exec.
Esempio:
Continua a leggere...
Locate
La sintassi del comando locate è molto semplice
locate [OPTION] [PATTERN]Tralasciando le varie opzioni, che essenzialmente servono a filtrare il risultato della ricerca e che possono essere facilmente consultate dall'utente sul manuale del comando tramite man locate, vi basti sapere che è sufficiente eseguire locate, seguito dal PATTERN [1] da ricercare, per avere in pochi istanti l'elenco dei file il cui URI [2] verifica il PATTERN passato come parametro.
Il pregio principale del comando locate è la sua velocità. Questo comando infatti, non effettua una ricerca in tempo reale dei file presenti sul disco ma utilizza un database dove sono memorizzate tutte le modifiche che avvengono sui filesystems del nostro sistema.
Il database viene aggiornato tramite il comando
updatedbil quale viene eseguito giornalmente da cron [3]. Purtroppo il più grande pregio di questo comando è anche il suo più grande difetto. Essendo il database di appoggio aggiornato giornalmente, il comando locate non può restituire quei files creati dopo l'ultimo aggiornamento del database. Per ovviare a questo inconveniente potete effettuare l'aggiornamento manuale del database tramite il comando
sudo updatedbEsempio:
- Restituisce il numero di files il cui URI contiene la stringa pippo
locate -c pippo
- Cerca i files "esistenti" nel momento in cui viene eseguito il comando, il cui URI contiene la stringa pippo (ricordiamo che locate non esegue una ricerca in tempo reale ma consulta un database interno, quindi, un file potrebbe essere stato cancellato dopo l'ultimo aggiornamento del database)
locate -e pippo
[1] In informatica, si parla di pattern relativamente ad algoritmi specifici, a volte ricorsivi, che seguono uno schema prestabilito, come ad esempio le funzioni di ricerca in una stringa. In tale contesto specifico, il pattern rappresenta anche la stringa (o insieme di stringhe) da ricercare. Da Wikipedia, l'enciclopedia libera.
[2] Uno Uniform Resource Identifier (URI, acronimo più generico rispetto ad "URL") è una stringa che identifica univocamente una risorsa generica che può essere un indirizzo Web, un documento, un'immagine, un file, un servizio, un indirizzo di posta elettronica, ecc. Da Wikipedia, l'enciclopedia libera.
[3] Nei sistemi operativi Unix e Unix-like, il comando cron consente la pianificazione di comandi, ovvero consente di registrarli presso il sistema per essere poi mandati in esecuzione periodicamente. Da Wikipedia, l'enciclopedia libera.
Find
Il comando find permette di ricercare files e directories, oltre che in base al nome, in base a molti parametri (la data di creazione, i permessi di accesso ai files, etc...) al fine di ottimizzare l'operazione di ricerca.
La sintassi del comando find ha la seguente struttura:
find [PATH] [OPTION] [PATTERN] [-exec COMANDO {} \;]Se utilizzato senza l'opzione [-exec COMANDO {} \;], find stampa a video i risultati della ricerca, ma, se tale opzione è esplicitata, esegue un comando sui files e le directories trovati.
Esempio:
- Cerca tutti i file PNG presenti nella directory home e nelle sue subdirectories.
find /home -name '*.png'
- Cerca ed elimina tutti i file temporanei all'interno della directory corrente e nelle sue subdirectories.
find . -name '*.tmp' -exec rm {} \;
- Cerca tutti i file appartenti all’utente pippo OPPURE all’utente pluto presenti nella directory corrente e nelle sue subdirectories.
find . -user pippo -or -user pluto
- Cerca tutti i file appartenti all'utente pippo i cui permessi sono 777 e nelle sue subdirectories.
find . -user pippo -perm 777


















