گاهی پیش میاد که لازم داریم دنبال یه عبارت خاص توی پوشه ها و فایلهایی که داریم بگردیم. خب باز کردن دونه دونه اونها و یکی یکی سرچ کردن هم سخته هم خنگولانه است!
با این روش ها میشه این کار رو راحت تر کرد:
grep -rnw '/path/to/somewhere/' -e "pattern" |
grep --include=*.{c,h} -rnw '/path/to/somewhere/' -e "pattern" |
این دستور جست و جو رو در فایلهایی انجام میده که پسوند اونها به c یا h ختم بشن
grep --exclude=*.o -rnw '/path/to/somewhere/' -e "pattern" |
یکم که با این دستورات بازی کنید نتیجه دلخواه خودتون رو میگیرید. برای توضیحات بیشتر به لینک منبع برید.
ویرایش:
یکی از خوانندگان عزیز وبلاگ، صدراله در مورد این سرچ کرد که چگونه یک عبارت را در تعداد زیادی فایل پیدا کنیم و اون را با یک عبارت دیگه جایگزین کنیم. یعنی همون find and replace در مقیاس بزرگ!
خودش زحمت کشید و جواب رو پیدا کرد و به اشتراک گذاشت. ممنون از تلاشش
find /home/user/directory -name *.c -exec sed -i "s/cybernetnews/cybernet/g" {} ; |
find /home/user/directory -type f -readable -writable -exec sed -i "s/cybernetnews/cybernet/g" {} ; |
بدیهیه که با این دستورها خیلی کارهای بزرگتری میشه کرد. کافیه بلد باشیم و خلاقیت داشته باشیم.