Ricerca di parole in molti file
A cura di
Totò Fiandaca
| issue
#184
| guida/e
Andrea Borruso
Introduzione
Ho migliaia di file *.json
in varie cartelle e devo ricercare la presenza (all'ìnterno dei file) di alcune parole: ERR
, []
, null
ecc…
la struttura delle cartelle è:
./rawdata/..../geo/
dove i ....
sono i segnaposto di cartelle con nomi diversi ma con 4 caratteri (es: A123, E345)
esempio:
D:\GitHub\pippo\rawdata\A015\geo
D:\GitHub\pippo\rawdata\A311\geo
D:\GitHub\pippo\rawdata\E418\geo
come fare questa ricerca usando la shell di Linux?
per adesso utilizzo everything cartella per cartella (usando i filtri D:\GitHub\pippo\rawdata\A015\geo\ content:ERR
) e siccome le cartelle sono oltre 50 cerco un modo veloce (ho provato a farlo con everything su tutte le cartelle D:\GitHub\pippo\rawdata\
ma crasha o impiega un tempo infinito)
mentre il filtro D:\GitHub\pippo\rawdata\*\geo\ content:ERR
non trova nulla.
soluzioni
- con search Everything: (occhio al doppio
\
usato per fare l’escape al back slash)
regex:"D:\\GitHub\\pippo\\rawdata\\.+\\geo" ext:json content:ERR
per velocizzare la ricerca e se il caso lo prevede, utilizzare anche il filtro size
regex:"D:\\GitHub\\pippo\\rawdata\\.+\\geo" ext:json size:<=40 content:ERR
- a riga di comando, per cercare contenuti uso sopratutto
ripgrep
. Entra nella cartellapippo/rawdata
via shell e poi lancia
rg -l --no-ignore --hidden --type json ERR | grep -Ei '/.{4}/geo'
Siti utili
- regex101, per testare espressioni regolari e imparare a usarle https://regex101.com/
- search Everythin : https://www.voidtools.com/downloads/
- ripgrep : https://github.com/BurntSushi/ripgrep