Bulma tüm Linux üzerinde bir metin dizesini içeren dosya
Tüm dosyaları belirli bir metin dizesini içeren tüm Linux sistem taraması için bir yol bulmaya çalışıyorum. Sadece netleştirmek için, dosya adı kutusuna dosya içinde metin arıyorum.
Bunun nasıl yapılacağı en iyi zaman, bu çözüm karşısında iki kez geldim:
find / -type f -exec grep -H 'text-to-find-here' {} \;
Ancak, işe yaramıyor. Sistemdeki her dosya görüntüler gibi görünüyor.
Bu bunu yapmak için doğru yol bulunur? Nasıl? yok olursa Dosyaları içinde metin dizeleri bulmak için bu yeteneği olağanüstü yapıyorum programlama bazı projeler için benim için yararlı olacaktır.
CEVAP
Aşağıdakileri yapın:
grep -rnw 'directory' -e "pattern"
-r
-R
özyinelemeli satır numarası ve -w
tüm kelimeyi maç duruyor. -l (L harfi) sadece dosya adı eklenebilir.
, --exclude
--include
Bu parametre ile birlikte, etkili bir arama için kullanılabilir. Sanki aşağıda:
grep --include=\*.{c,h} -rnw 'directory' -e "pattern"
Bu sadece var olan dosyalar arasında arama yapar .c ya .h uzantıları. Benzer şekilde --exclude
örnek kullanım:
grep --exclude=*.o -rnw 'directory' -e "pattern"
Yukarıdaki tüm dosyaları ile biten arama hariç tutar .o uzatma. Dışlamak mümkün --exclude-dir
--include-dir
parametre aracılığıyla dizinleri dahil/dışlamak için dosya gibi, aşağıdaki --exclude-dir
entegre etmek için nasıl gösterir:
grep --exclude-dir={dir1,dir2,*.dst} -rnw 'directory' -e "pattern"
Bu benim için çok iyi, hemen hemen senin gibi aynı amaca ulaşmak için çalışır.
İçin daha fazla seçenek :
man grep
Hızlı bir Linux sistemi üzerinde büyük...
Bash : boşluk içeren dosya listesi üze...
Nasıl Linux üzerinde başka bir uygulam...
Nasıl ("kesmek") zaten linux...
Nasıl bir dosya Red Hat Linux üzerinde...