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.