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