2012-12-14 10 views

Odpowiedz

10

Zakładając masz dwa pliki dziennika-w:

  • C: /temp/my.log
  • C: /temp/alsoMy.log

cd C: i wykorzystanie :

grep -r somethingtosearch temp/*.log 

To daje listę:

temp/my.log:somethingtosearch 
temp/alsoMy.log:somethingtosearch1 
temp/alsoMy.log:somethingtosearch2 
+0

Jak mogę uzyskać numer wiersza przeszukiwanego treści? –

+0

@ Özzesh add -n do zgłaszania pościeli – Schpaencoder

-1

Zastosowanie:

grep somethingtosearch *.log 

i nazwy plików zostaną wydrukowane wraz z meczów.

15

Czy próbowałeś używać flagi -l?

grep -l somethingtosearch 

Spowoduje to wyświetlenie tylko ścieżek i nazw plików, w których znaleziono wyszukiwanie, a nie całej linii, w której zostało wykonane dopasowanie.

Używany z flagą -r do rekursji.

+8

grep -l daje tylko nazwy pliku nie jest kompletna ścieżka – Kapil

1

mi
grep -b „searchsomething” * .log pracował jak chciałem

+1

Nie chodzi o to, czego chcesz, tylko o to, co chce OP. – a20

5

Jeśli chcesz zobaczyć pełen ścieżek, polecam do cd na górę katalogu (z dysku w przypadku Windows)

cd C:\ 
grep -r somethingtosearch C:\Users\Ozzesh\temp 

lub na Linuksie:

cd/
grep -r somethingtosearch ~/temp 

jeśli naprawdę będziesz się opierał na filtrowaniu nazw plików (*.log) i chcesz recursive (pliki nie są w tym samym katalogu), łącząc find i grep jest najbardziej elastyczny sposób:

cd/
find ~/temp -iname '*.log' -type f -exec grep somethingtosearch '{}' \; 
1

Najprostszym sposobem, aby drukować pełnych ścieżek jest zastąpić ścieżkę względną zaczynać się ścieżki bezwzględnej:

grep -r --include="*.sh" "pattern" ${PWD} 
1

Command:

grep -rl --include="*.js" "searchString" ${PWD} 

Zwracany wyjściowa:

/root/test/bas.js 
1

Wpadłem tutaj, kiedy szukałem dokładnie tego samego problemu i może to może pomóc innym.

Myślę, że prawdziwym rozwiązaniem jest:

cat *.log | grep -H somethingtosearch 
Powiązane problemy