Q & A

Am incercat sa gaseasc o cale de a scana intregul meu sistem Linux pentru toate fisierele care contin un sir de caractere de text specific.

Doar pentru a clarifica, caut text din dosar, nu in numele fisierului.

Cand am cautat , am dat peste aceasta solutie de doua ori:
find / -type f -exec grep -H 'text-to-find-here' {} \;

Cu toate acestea, aceasta nu functioneaza.

  • GNU/Linux.ro
  • 5 years ago

Urmeaza urmatoarele instructiuni:

grep -rnw '/path/to/somewhere/' -e 'pattern'
  • -rsau -Reste recursiv,
  • -n este numarul liniei, si
  • -w standuri pentru a se potrivi cu tot cuvantul.
  • -l (Minuscula L) pot fi adaugate pentru a da doar numele de fisier de potrivire a fisierelor.

Alaturi de acestea ar putea fi folosite steaguri, --exclude, --include, --exclude-dir  pentru o cautare mai eficienta:

  • Acest lucru va cauta numai prin acele fisiere care au  extensii .c sau .h:

    grep --include=\*.{c,h} -rnw '/path/to/somewhere/' -e "pattern"
    
  • Aceasta va exclude cautarea tuturor fisierelor care se termina cu extensia .o:

    grep --exclude=*.o -rnw '/path/to/somewhere/' -e "pattern"
    
  • Pentru directoare este posibil s-a excluzi un anumit director (e) prin parametru --exclude-dir. De exemplu, acest lucru va exclude dirs dir1 /, dir2 / 

    grep --exclude-dir={dir1,dir2,*.dst} -rnw '/path/to/somewhere/' -e "pattern"
    

Pentru mai multe optiuni de a verifica man grep.