Voglio cercare una stringa di testo in tutti i file in una directory (e non nelle sue sottodirectory; so che l' -ropzione lo fa, ma non è quello che voglio).
In esecuzione
grep "string" /path/to/dirdovrebbe essere in grado di farlo, ho letto, ma mi dà l'errore:
grep: dir: è una directory
Successivamente, ho provato a correre
grepsu più file.grep "string" .bashrc .bash_aliasesfunziona perfettamente.grep "string" .bash*funziona anche come previsto.grep "string" *mi dà gli errori:grep: data: Is a directory grep: Desktop: Is a directory grep: Documents: Is a directory grep: Downloads: Is a directory ...
Vengono stampati solo gli errori, non visualizzo le righe corrispondenti. Ho provato a usare l' -sopzione, ma senza risultati.
Quindi, le mie domande:
Perché non riesco a utilizzare
grepuna directory, come in (1), quando dovrei essere in grado di farlo? L'ho visto fatto in molti esempi su Internet.
Modifica : quando dico "usando grep su una directory", intendo "cerca in tutti i file in quella directory escludendo le sue sottodirectory". Credo che questo sia ciò che Grep fa quando gli passi una directory al posto di un file. Sono errato?Per favore, mi dia una spiegazione sul funzionamento
grepche spiegherebbe il comportamento dei comandi in (2).
Modifica : lasciami essere più specifico. Perché usare i caratteri jolly per specificare più file in cui cercare il lavoro con.bash*e non con*o addirittura./*?Come posso cercare tutti i file in una directory (e non nelle sue sottodirectory) usando
grep?
grep "string" .bash*anche con .
grep "string" * .* 2>/dev/nulloppuregrep -s "string" * .*
*, noto come globbing. Globbing non include i nomi di file che iniziano con un punto.bashrccome standard. Puoi impostare le opzioni della shell in modo che includano questi file, ma puoi metterti in un pasticcio se non sai cosa stai facendo. Una buona guida per comprendere il globing può essere trovata qui mywiki.wooledge.org/glob