Come grep Cerca i nomi dei file invece del contenuto in Linux

0
106

grep è uno strumento Linux solitamente utilizzato per cercare contenuti specifici nei file di testo. Tuttavia, è spesso utile cercare nelle directory i nomi dei file invece del contenuto dei file, e questo può essere fatto con grep e altre utilità della riga di comando di Linux

Utilizzo di find invece di grep

L'utilità grep essenzialmente prende l'input di stringa da file o input standard e utilizza pattern o Regex per cercare e stampare le righe corrispondenti.

Puoi tecnicamente utilizzare grep da solo per cercare i nomi dei file anziché il contenuto, ma è solo perché Linux consente i caratteri jolly negli input dei nomi dei file. Tuttavia, puoi utilizzare altrettanto facilmente ls per elencare i file in questo modo o utilizzare caratteri jolly in qualsiasi altro comando, e non è una vera soluzione per la ricerca di nomi di file come il modo in cui grep cerca i contenuti.

grep “” ./file* -l

La vera soluzione è utilizzare l'utilità di ricerca, che può cercare nelle sottodirectory e fornisce il modo più resiliente per cercare i file poiché interagisce direttamente con il filesystem. Questa è l'utilità più comunemente utilizzata per la ricerca nelle directory e ha molte opzioni, tra cui la corrispondenza dei modelli e il supporto per espressioni regolari.

L'utilizzo più semplice è utilizzare trova da solo per stampare un elenco di file, incluse le sottodirectory, e feed che immettono in grep. Se disponi già di script che utilizzano grep, sarà abbastanza facile convertirli in corrispondenza in questo modo.

trova | grep “file”

Puoi anche utilizzare i modelli direttamente con trova, eliminando la necessità di grep. Usa -iname con un input.

trova . -iname 'file_*.txt'

Tuttavia, a differenza di grep, il comando trova è un po' più rigoroso: è necessario utilizzare virgolette singole o doppie per eseguire l'escape della stringa di ricerca e utilizzare caratteri jolly per abbinare l'intera stringa. Non è possibile trovare semplicemente una sottostringa nel nome senza utilizzare caratteri jolly per abbinare il resto del nome.

Utilizzare le espressioni regolari (Regex) con trova

Puoi anche usare le espressioni regolari con trova, che consente una corrispondenza molto più avanzata:

trova . -regex './file.*'

Questa espressione regolare corrisponderà a tutti i file nella directory corrente che iniziano con “file.” Tuttavia, è importante essere consapevoli del fatto che funziona in modo diverso da -iname; l'input include il percorso completo della directory e deve utilizzare ./ per sfuggire al percorso relativo, ./.

Questo comando mostrato qui esclude la cartella ./sottodirectory/ perché non si avvia con “file”. Per risolvere questo problema, devi abbinare tutto ciò che porta alla barra finale finale con .*/:

trova . -regex '.*/file.*'

Le espressioni regolari sono molto complicate, ma molto potenti. Se vuoi saperne di più, puoi leggere la nostra guida su come funzionano.

RELAZIONATO: Come usi effettivamente Regex? >

LEGGI SUCCESSIVO

  • › Recensione del tablet Amazon Fire 7 Kids (2022): sicuro, robusto, ma lento
  • › Gli extender Wi-Fi meritano la loro cattiva reputazione?
  • › 12 fantastiche funzionalità di Safari che dovresti utilizzare su iPhone
  • › Le nuove foto spaziali della NASA sono gli sfondi perfetti per il desktop
  • › Recensione del proiettore XGIMI Horizon Pro 4K: brillante e brillante
  • › Quanto riscalda il tuo computer la tua casa?