find . -type f | xargs file | grep text | cut -d':' -f1 | xargs grep -l "TEXTSEARCH" {}
è una buona soluzione? per trovare TEXTSEARCH ricorsivamente in soli file testualisolo file di testo grep
find . -type f | xargs file | grep text | cut -d':' -f1 | xargs grep -l "TEXTSEARCH" {}
è una buona soluzione? per trovare TEXTSEARCH ricorsivamente in soli file testualisolo file di testo grep
È possibile utilizzare la -r
(ricorsiva) e -I
(ignora binario) opzioni in grep
:
$ grep -rI "TEXTSEARCH" .
-I
elaborare un file binario come se lo ha fatto non contiene dati corrispondenti; questo è equivalente all'opzione--binary-files=without-match
.-r
Leggere tutti i file in ogni directory, in modo ricorsivo; questo è equivalente all'opzione-d recurse
.
Questa è la risposta giusta. – PhiloSurfer
@PhiloSurfer: vota. ;) –
No, questo non può ignorare il file speciale, come socket unix – hylepo
Un'altra soluzione meno elegante di keV, è, a catena -exec comandi a trovare insieme, senza xargs e tagliare:
find . -type f -exec bash -c "file -bi {} | grep -q text" \; -exec grep TEXTSEARCH {} ";"
Guarda la risposta successiva. Non usare questo. – coder543
Quale problema vedi con questo? –
è complesso e inefficiente. Lo strumento grep integrato è in grado di risolvere la domanda con un singolo flag. Questa risposta può fare il lavoro, ma è una soluzione scadente, alla luce dell'esistenza dell'altro. Non sei d'accordo? – coder543
la prego di accettare la risposta con il miliardo upvotes invece? –
ok grazie @ Zoltán – StefanoCudini