Metodi di pagamento Abuse

Ricerca di file in base al contenuto in Linux: ack e ripgrep

03.05.2023, 23:33

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:

  1. Trovare tutti i file nella cartella corrente e nelle sue sottocartelle che contengono la parola "test": rg "test"
  2. Lo stesso, ma escludendo i file con estensione .bak: rg "test" --glob "!*.bak"
  3. 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.