L'uso della ricerca dei file per contenuto in Linux può ridurre significativamente il tempo e lo sforzo quando si cercano informazioni specifiche in file system grandi e complessi.
Perché è necessario cercare i file per contenuto
Questa ricerca può essere particolarmente utile quando si desidera trovare i file che contengono una determinata stringa o parola chiave, oppure quando si desidera trovare tutti i file che corrispondono a un determinato modello o criterio.
La ricerca di file in base al contenuto può essere utilizzata per varie attività, come ad esempio per trovare:
- testo specifico in file di testo di grandi dimensioni
- file di configurazione e script contenenti determinate impostazioni o comandi
- file che contengono dati specifici, come nomi di utenti o numeri di telefono
- file in base al tipo di contenuto, ad esempio per trovare tutti i file contenenti immagini JPEG o documenti PDF.
Lo scopo generale della ricerca dei file per contenuto è quello di facilitare il lavoro con il file system e di trovare le informazioni necessarie nel file system.
ack
Cominciamo con l'utilità ack. È stata creata nel 2005 come alternativa a grep ed è diventata rapidamente popolare tra gli sviluppatori.
Presenta diversi vantaggi rispetto a grep, tra cui:
- ricerche più intelligenti nei file e nelle eccezioni. Per impostazione predefinita, ack cerca solo nei file che potrebbero avere senso, ad esempio escludendo le cartelle .svn o .git. È inoltre possibile aggiungere regole ed eccezioni personalizzate;
- Per impostazione predefinita, Ack cerca nei file e nelle directory nascoste;
- Ack non cerca ovunque, anche nelle cartelle di sistema, come
grep. Ciò significa che è possibile trovare facilmente i file nascosti nel sistema.
Esempi di utilizzo di ack:
- Trovare tutti i file nella cartella corrente e nelle sue sottocartelle che contengono la parola
"test": ack "test".- Stessa cosa, ma escludendo i file con estensione
.bak: ack "test" --ignore-file=match:/.bak$/- Trova tutti i file nella cartella corrente contenenti la stringa "hello" e visualizza le prime 2 righe di ogni file:
ack "hello" --heading --max-count=2
ripgrep
Il secondo strumento interessante è ripgrep. È simile ad ack sotto molti aspetti, ma utilizza un algoritmo di ricerca più veloce, che lo rende particolarmente utile per progetti di grandi dimensioni.
Ecco alcuni esempi:
- Trovare tutti i file nella cartella corrente e nelle sue sottocartelle che contengono la parola
"test": rg "test" - Lo stesso, ma escludendo i file con estensione
.bak: rg "test" --glob "!*.bak" - Trova tutti i file nella cartella corrente contenenti la stringa "hello" e visualizza le prime 2 righe di ogni file:
rg "hello" --heading --max-columns=2
Alla fine vale la pena menzionare fzf. Non è solo un cercatore di stringhe come ack e ripgrep. Fzf è usato come utility per trovare file, cartelle e elementi in un elenco. Per il resto funziona in modo simile ad ack/ripgrep, ma con l'aggiunta della possibilità di filtrare i risultati. Ecco alcuni esempi:
- Cercare i file che iniziano con la lettera F nel computer:
locate F | fzf -m- Uscire dalla cartella corrente e andare nella directory desiderata:
cd **<TAB> | fzf- Selezionare la revisione SVN e copiare il numero negli appunti:
svn log | fzf --reverse --ansi | awk '{print $1}' | pbcopy
Speriamo che questi strumenti vi aiutino a trovare i file e le stringhe di cui avete bisogno in modo rapido ed efficiente. Qualunque sia la vostra scelta, tutti offrono ricerche avanzate che possono accelerare notevolmente il vostro lavoro.



