2011-07-04 25 views
20

Geçerli dizin altında tüm java dosyalarında String satırlarını bulmak için grep kullanmak istiyorum.Alt dizinlerdeki tüm java dosyalarında bir dize nasıl grep edilir?

Denedim:

grep -r "String" **/*.java 

Ama çalışmıyor:

grep : **/*.java: no such file or directory 

Nasıl Yazılır?


GÜNCELLEME

Ben grep--include parametresini desteklemez unxUtils tarafından sağlanan kullanarak, pencerelerde değilim. Başka yolu var mı?

+0

** 'Windows' ** için [SourceForge] (http://astrogrep.sourceforge.net/) adresinde [AstroGrep] (http://astrogrep.sourceforge.net/) adında bir program öneririm. GUI tabanlı ve varsayılan onay kutusu "Arama alt klasörleri" dir. Çok beğendim, sadece Linux kutumun üzerinde eşdeğer bir dilek diliyorum ... ~ ~ – will

cevap

44

Kullanım özyinelemeli grep:

grep -r "String" --include=*.java . 
+1

teşekkür ederim. Linux üzerinde çalışıyordum, ama şimdi pencerelerdeyim. Başka yolu var mı? – Freewind

+0

Eğer cygwin yüklü ise aynı komut Windows üzerinde de çalışacaktır, ben gerçekten cygwin'imi denedim ve Windows 7'de de iyi çalıştı. Pencerelerde – anubhava

+1

http://gnuwin32.sourceforge.net/ – culmat

4

Ben unxUtilsfind yarar sağlamak sanırım. Yani çizmeyi deneyebilirim:

find . -name "*.java" -exec grep "String" {} \; 

veya

find . -name "*.java" -exec grep "String" {} \+ 

ilk sürümü bulunan her dosya için tek bir grep komutu yerine getirecektir. Son sürüm, yalnızca gerektiği kadar grep komutunu yürütür, ancak her find sürümü, + bağımsız değişkenini desteklemez.

+0

Öneririm Kötü haber. -name "* .java" '' unxUtils'' için 'fild'' için çalışmaz, 'Dosya bulunamadı - * .java'. Son olarak, 'cygwin' – Freewind

+0

'u kurdum. Daha kolay hale getirmek için aramanın bir parçası olarak bir dosya adı eklemek faydalı olabilir. Baskı argümanı burada yardımcı olacaktır: bulmak. -name "* .java" -print -exec grep "Dize" {} \; –

İlgili konular