Unmit

2017-03-07 69 views
5

'da bulma komutunu kullanırken bir "dizin oluştur" sonucu, bir dizin yapısında yinelemeli olarak bir dizeyi bulmak için aşağıdaki komutu kullanıyorum.Unmit

find . -exec grep -l samplestring {} \; 

Ama büyük bir dizin yapısı içinde komutunu çalıştırdığınızda,

grep: ./xxxx/xxxxx_yy/eee: Is a directory 
grep: ./xxxx/xxxxx_yy/eee/local: Is a directory 
grep: ./xxxx/xxxxx_yy/eee/lib: Is a directory 

uzun bir liste olacak O yukarıdaki sonuçlara atlamak istiyorum. Ve sadece görüntülenen dize ile dosya adını alın. Birisi yardım edebilir mi? Eğer find . diyorsun zaman

cevap

3

, yardımcı program geçerli dizin yapısı içinde tüm unsurları dönmek için gidiyor: dosyaları, dizinleri, bağlantıları ...

sadece dosyaları bulmak istiyorsanız, sadece söyle!

grep -lR "samplestring" 
+2

'-type f' ve' grep -r' veya 'grep -R'yi bulmak iyi seçimlerdir ... sadece yanıtı tamamlamak için, belki de şunu eklemelisiniz' -d skip 'özellikle' bir dizin var ' sorun ... en azından özyinelemeli arama için kabuk seçeneklerini kullanma gibi durumlarda, örneğin: grep -d skip -l 'samplestring' **/@ (*. txt | * .log) ' – Sundeep

+1

@Sundeep nice ! -d'nin bayrağının farkında değildim. – fedorqui

3

grep -s veya grep --no-messages

O kullanmak umut ediyor taşınabilirlik the GNU grep documentation yılında notları okumaya değer:

find . -type f -exec grep -l samplestring {} \; 
#  ^^^^^^^ 

Ancak, bir dizeyi içeren tüm dosyaları söyleyerek bulmak isteyebilirsiniz bu kod birden çok yer olsa da:

-s --no-messages Suppress error messages about nonexistent or unreadable files. Portability note: unlike GNU grep, 7th Edition Unix grep did not conform to POSIX, because it lacked -q and its -s option behaved like GNU grep’s -q option.1 USG-style grep also lacked -q but its -s option behaved like GNU grep’s. Portable shell scripts should avoid both -q and -s and should redirect standard and error output to /dev/null instead. (-s is specified by POSIX.)

+0

Onları önleyebileceğiniz zaman hataları gizlemenin yararlı olduğunu düşünmüyorum. Cevabımı gör – fedorqui