2013-03-25 20 views
166

Dizin veya LINUX içinde bir dizinde ve tüm altdizinler'filesinde bir metin veya grep nasıl?Dizinde ve tüm alt dizinlerinin dosyalarında LINUX'da bir dize nasıl kopyalanır?

+1

"grep -r" veya "grep -R" ile karşılaştığınız sorunlarla ilgili herhangi bir geri bildirim sağlayabilecek misiniz? Makinenizdeki 'grep' için man sayfasını kontrol ettiniz mi? Herhangi bir metakarakter içeriyorsa normal ifadeyi (dize veya metin) tek tırnak içine almayı hatırladınız mı? –

cevap

326

sizin grep -R destekliyorsa, yapın:

grep -R 'string' dir/ 

Değilse, o zaman kullanmak find:

find dir/ -type f -exec grep -H 'string' {} + 
+3

İkinci cevabın nasıl çalıştığını da açıklayabilir misiniz? – tranquil

+1

Normal dosyalar için 'find' dizini' '/' 'dır,' 'grep -H 'string'' komutunu çalıştırır. – markzz

+0

Aşağıya bkz. -R' çalışmıyorsa, -r'yi de deneyin. –

38
grep -r -e string directory 

-r özyinelemeli içindir; -e isteğe bağlıdır, ancak argümanı aranacak normal ifadeyi belirtir. İlginç bir şekilde, POSIX grep, -r (veya -R), ancak 'u desteklemek için gerekli değildir, pratikte, Sistem V grep'un uygulamada olduğundan eminim, yani uygulamada (hemen hemen). grep'un bazı sürümleri -R'un yanı sıra (veya bunun yerine) -r; AFAICT, aynı şey anlamına gelir.

+0

Oldukça eminim ki SVR3.2 ve SVR4 grep, o zaman çerçevesi içinde SYSV ürünleri için OS geliştirme üzerinde çalıştığı gibi, ve ben de o zaman sarmak için bir rgrep kabuk betiği vardı. Yine de test etmek için bir tane daha yok. –

+0

@RandyHoward: Teşekkürler! SVR3.2 ve SVR4.0, hafızamın hatalı olduğunu bulmak için şaşırmadığım yeterince antika. –

+1

'-R ', –