2009-10-28 10 views
5

Próbuję grep wielu rozszerzeń w bieżącym i wszystkie podfoldery.grep wiele rozszerzenia prądu i podfolderów

grep -i -r -n 'hello' somepath/*.{php,html} 

To tylko przeglądanie bieżącego folderu, ale nie podfolderów.

Jaki byłby dobry sposób robienia tego?

Odpowiedz

2

Jednym z nich:

find '(' -name '*.php' -o -name '*.html' ')' -exec grep -i -n hello {} + 
find '(' -name '*.php' -o -name '*.html' ')' -print0 | xargs -0 grep -i -n hello 
9

Używając tylko grep:

grep -irn --include='*.php' --include='*.html' 'hello' somepath/ 
+0

to lepsze rozwiązanie. Czy istnieje możliwość łączenia razem wzorca? Przeplatałem wokół globalnych wzorów, ale nigdy nie działałem poprawnie. :-( – Christoph

0

szukałem taka sama, a kiedy postanowił zrobić skrypt bash Zacząłem vim codesearch i zaskoczyć ja już to zrobił przed!

#!/bin/bash 
context="$3" 
#ln = line number mt = match mc = file 
export GREP_COLORS="sl=32:mc=00;33:ms=05;40;31:ln=" 
if [[ "$context" == "" ]]; then context=5; fi 
grep --color=always -n -a -R -i -C"$context" --exclude='*.mp*'\ 
--exclude='*.avi'\ 
--exclude='*.flv'\ 
--exclude='*.png'\ 
--exclude='*.gif'\ 
--exclude='*.jpg'\ 
--exclude='*.wav'\ 
--exclude='*.rar'\ 
--exclude='*.zip'\ 
--exclude='*.gz'\ 
--exclude='*.sql' "$2" "$1" | less -R 

wklej ten kod do w pliku o nazwie codesearch i ustawić chmod 700 lub 770 myślę, że to mogłoby być lepiej tutaj po raz kolejny, że zapomniałem

ten skrypt pokaże w kolorach mecze i kontekst wokół

./codesearch '/full/path' 'string to search' 

i opcjonalne określające liczbę linii kontekstu wokół domyślnie 5

./codesearch '/full/path' 'string to search' 3 

edytowany kod i dodaje trochę eye candy

przykład ./codesearch ./ 'eval' 2 screenshot codesearch

Wygląda na to, gdy masz włączone "pozwalają migający tekst" w terminalu