لینوکس و من

پیدا کردن یک عبارت در یک سری فایل

نویسنده : امین | تاریخ: 1395/01/30

گاهی پیش میاد که لازم داریم دنبال یه عبارت خاص توی پوشه ها و فایلهایی که داریم بگردیم. خب باز کردن دونه دونه اونها و یکی یکی سرچ کردن هم سخته هم خنگولانه است!
با این روش ها میشه این کار رو راحت تر کرد:

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 تبدیل میکند.
بدیهیه که با این دستورها خیلی کارهای بزرگتری میشه کرد. کافیه بلد باشیم و خلاقیت داشته باشیم.

لینک‌های مرتبط

1395/02/3 14:48
سلام با یه خط دستور در ۴۳۰۰ فایل htm کار رو انجام داد حتی سریع‌تر از regexxer
http://askubuntu.com/questions/84007/find-and-replace-text-within-multiple-files

دستور اول
پاسخ امین : بسیااااار عالی. حتما وارد متن خواهد شد. دم شما گرم
1395/02/1 12:18
سلام
یک سؤال و یک پیشهاد
اگر بخوام دنبال کارکتر ی در فایل‌های html بگردم و اون رو با ی جایگزین کنم برای قسمت دوم چه باید کرد؟
شما الان خیلی قشنگ بخش اول رو توضیح دادید لطفا بخش دوم رو هم بفرمایید



و اما من مطالب شما رو از طریق planet.sito.ir دنبال می‌کنم که فیدی که در اونجا قرار گرفته فیلتره
بعد گفتم همون وبلاگ لینوکس و من هست شک داشتم و جستجو کردم

تقریبا این اشتباه همیشه هست
پاسخ امین : سلام.
در مورد replace کردن کاراکتر فعلا نمیدونم. در موردش جست و جو میکنم. شما هم بکنید...
در مورد فید هم یه فکری میکنیم. چشم.
1395/01/30 21:16
grep ابزار قدرتمندی هست، اما رجکس قدرتمندتره! بدون regex، گرپ هیچی نیست. یاد گرفتن رجکس واجب ترینه!
1395/01/30 18:46
واقعا ابزار قدرتمندی هست این grep هر چیزی ازش یاد میگیری بازم کمه

اول خط اشتباه تایپی داره یه نگاه بندازید.
پاسخ امین : اوووو!مرسی. تصحیح شد
 
لبخندناراحتچشمک
نیشخندبغلسوال
قلبخجالتزبان
ماچتعجبعصبانی
عینکشیطانگریه
خندهقهقههخداحافظ
سبزقهرهورا
دستگلتفکر

برای کپی پیست کردن در متن نظرات کلید shift را نگه دارید و بعد right click کنید.