Geçerli dizindeyken yinelenen bir dize arama


15

Belirli bir dizede olduğum dizinden tüm dosyaları özyinelemeli olarak aramak istiyorum.

denedim

grep -r -i my_string

ve iki küçük dosya ile bir test klasöründe denedim ama dize bulamaz.

Ayrıca, tüm kelimeyi eşleştirmek yerine "içerir" i tanımlamanın özel bir yolu var mı?


3
Deneyin grep -r -o -i "your_string" *("tırnak işaretleri ile)
pl1nk

birkaç izin reddedildi mesajlar alıyorum, sadece bu dosyaları görmezden geliyor ama geri kalanını kontrol devam?
David

Doğru, bu dosyalar yok sayılıyor.
pl1nk

Yanıtlar:


27

Bir dosya adı mı yoksa dosya içinde bir kelime mi arıyorsunuz? grep, dosyaların içinde arama yapar, bu da istediğiniz gibi görünür.

grep düzenli ifadeler kullanır - aslında, "re" kısmı bunun anlamıdır. Bu nedenle, normal bash joker karakterlerini kullanmaz; yani, abc*abc ile başlayan kelimeleri bulamaz, ab ile başlayan kelimeleri, sonra sıfır veya daha fazla c'yi takip eder. Ama evet, eğer ona sadece bir desen verirseniz, onu tam bir kelime bilgisi olmadan her yerde bulur. Tüm kelimeleri bulmak istiyorsanız, bunu söylemek için düzenli bir ifade oluşturmanız gerekir.

Ancak, çoğu komut gibi, dosya adlarını komutun sonuna koymanız gerekir, bu nedenle örneğin sadece orada oturup dosya adını bekler.

@Plink'in dediği gibi,

grep -r -o -i "your_string" *

(veya *.*veya başka bir dosya türü). Hatalar göz ardı edilebilir. Çok fazla hata 2>/dev/nullalıyorsanız, stderr öğesini boş bir cihaza yönlendirecek olan sonuna ekleyebilirsiniz .


6
Meraklı olanlar için: -r özyinelemeli (yani geçerli klasörde ve geçerli klasördeki TÜM klasörlerde görünüyor VE bu klasördeki tüm klasörler ..... sonsuza kadar), -o satırın tamamını göstermez, ve -i durumu görmezden gelir.
BKSpurgeon

@johnsnails Backtick gerekli değil. Satır içi kod bloğu olarak gönderirken Stack Exchange'de bir biçimlendirme hatası olması daha olasıdır.
tom_mai78101

Evet bu mantıklı.
johnsnails
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.