Linux'ta metin deseni arama


20

Ben linux bir acemi. / Home / user1 / (alt klasörler dahil) altında gelen tüm * .java dosyalarında bir dize "teststring" aramak gerekir. Linux'ta shell komutu ile nasıl yapabilirim.


Komut satırından alt dizinlerdeki normal ifade arama dosyaları ile ilgili birkaç soru vardı
RobotHumans

hızlı bir arama bu soruyu ortaya çıkardı: superuser.com/questions/208271/… tam olarak aradığınız şey değil, ama exec cp yerine her ne olursa olsun kedi / grep olabilir
RobotHumans

Find / home / user1 -name * .java uzantılı dosyayı listeleyebilirim Bu konuda grep nasıl kullanılır?
darthvader

Yanıtlar:


23

En kolay yol GNU grep'in özelliklerini kullanmaktır:

grep -r --include '*.java' teststring /home/user1

GNU grep'e sahip olmayan başka bir unix varyantındaysanız, taşınabilir bir yol:

find /home/user1 -name '*.java' -exec grep teststring {} +

güzel bu grep özelliği hakkında bilmiyordum
RobotHumans

1
Geçerli dizini ve tüm dosyaları arıyorsanızgrep -r teststring .
Chris Moschini


4

Bu ack aka ack-grep için kafamda katil uygulaması;)

Şunları yapabilirsiniz ack some_string /in/path_ybulmak için some_string içinde path_y Veya daha basit ack some_other_stringsimdiki içinde some_other_sting bulmak için.


2

Buldum. Birisine yardımcı olabileceği gibi yayınlamak.

find /home/user01 -name *.java | xargs grep "teststring"

Daha iyi bir yol varsa lütfen düzeltin.


3
Genellikle, kullanmak gerekir -print0ve -0boru zaman findiçine xargsdüzgün adlarında boşluk veya yeni satır olabilir dosyalarla çalışmaya:find /home/user01 -name *.java -print0 | xargs -0 grep "teststring"
ikinci bir emre kadar durdurulmuş.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.