چجوری دو رشته string رو در فایل ها پیدا کنیم؟

1.26K viewsلینوکسfind grep string
0

من از دستور ذیل برای پیدا کردن یک رشته توی یک مسیر، استفاده می کنم:

find /var/www/http -type f | xargs grep -iR "STRING"

اما چجوری می تونم دو رشته مختنلف رو تو فایلها جستجو کنم؟ دستور زیر کار نمی کنه:

find /var/www/http -type f | xargs grep -iR "STRING1" | xargs grep -iR "STRING2"
0

سلام

واسه انجام این کار میشه از دستور grep و egrep استفاده کرد. به چند صورت میشه اینکارو انجام داد

Use single quotes in the pattern: grep 'pattern*' file1 file2
Use extended regular expressions: egrep 'pattern1|pattern2' *.py
Use this syntax on older Unix shells: grep -e pattern1 -e pattern2 *.pl

منالز:

In this example, search warning, error, and critical words in a text log file called /var/log/messages, enter:
grep 'warning\|error\|critical' /var/log/messages
To just match words, add the -w option:
$ grep -w 'warning\|error\|critical' /var/log/messages
Use the egrep command and you can skip the above syntax to search three words:
$ egrep -w 'warning|error|critical' /var/log/messages
یا اینکه میشه به این صورت هم استفاده کرد:
$ grep -e 'warning|error|critical' /var/log/messages
البته پیشنهاد میشه که از آپشن -i و --color جهت وضوج بیشتر خروجی استفاده بشه
به عنوان مثال
$ egrep -wi --color 'warning|error|critical' /var/log/messages

البته با استفاده از دستور find نیز این امکان وجود دارد که برای اطلاعات بیشتر می تونی از لینک زیر استفاده کنی

 

http://alvinalexander.com/linux-unix/linux-find-multiple-filenames-patterns-command-example

دسته ها

آمار سوال

  • تغییرات
  • بازدیدیک بار
  • پاسخ ها1 پاسخ