Sto cercando una stringa particolare (principalmente nei file .c) in modo ricorsivo dalla directory principale.ricorsione grep - incoerenze
Quando lo uso, ottengo una lista quasi immediatamente.
grep -rl "F_capture" .
Tuttavia, se tento di accelerare le cose da solo la ricerca dei file .c:
grep -r --include=*.c "F_capture" .
io alla fine con un gran numero di avvisi di directory ricorsive in questo modo:
grep: warning: ./sys/block/fd0/device/bus/drivers/i8042/i8042/serio1/input:event1/subsystem/event3/device/bus/drivers/pcnet32/0000:00:03.0/subsystem: recursive directory loop
Quando ho provato a sopprimere gli avvertimenti usando il parametro -s, non ricevo gli avvertimenti, ma non ottengo nulla neanche indietro - sembra che stia andando verso il mai e poi mai atterrare.
grep -rsl --include="*.c" "F_capture" .
Quindi credo che la mia domanda è, perché il primo grep ho usato subito il ritorno qualcosa e gli altri tipi di dove sto rivolte un tipo specifico di file di sembra di riagganciare. Penserei che la ricerca mirata sarebbe più veloce.
Sembra un BUG. '-r' seguendo i collegamenti simbolici solo se si trovano sulla riga di comando. Sembra che '--include' rompa questo, e il grep cerchi di seguire i collegamenti simbolici. – jm666
Ricevi gli stessi errori quando provi '--include = *. C' (come nella tua seconda riga sopra citata) e' --include = "*. C" '(come nella tua quarta riga citata sopra)? In caso contrario, cosa ottieni da 'shopt | grep glob' (supponendo che tu stia usando bash)? – dg99
dg99 - sì, se tolgo l'opzione -s, ottengo gli stessi errori se uso "* .c" o * .c. Quando digito shopt | grep glob Ho una lista di "glob" - tutti spenti. – stackbacker