با ثبت نام در سایت از مزایای اعضا بهره مند شوید!

پیدا کردن مسیر فایل هایی که متن خاصی را دارا هستند ؟!

+1 امتیاز
299 بازدید
سوال شده آبان 13, 1392 در دستورات لینوکس توسط dr.nima (12 امتیاز)

چگونه میتوانیم در ترمینال لینوکس تمامی" فایل هایی" که یک" متن" خاصی را دارا هستند جست و جو کرد؟
مثلا مسیر تمام فایل هایی که حاوی متن ali هستند را جست و جو کنیم
اصلا میشه!!!!!

3 پاسخ

0 امتیاز
پاسخ داده شده آبان 13, 1392 توسط hossein (9,007 امتیاز)

سلام dr.nima
لینوکس باید محتوای فایل رو ببینه و بعد بفهمه که توی اون خطی به نام علی هست یا نه.
مثلا با دستور زیر می تونم بفهمم توی فایال test.txt کلمه ی علی وجود داره یا نه :

grep ali test.txt

برای کار شما اول باید محتوا خونده ( cat ) بشه و بعد محتوا به دستور grep فرستاده بشه.
نمی دونم تابع این دستور چی میشه ولی فکر کنم بشه این تابع رو نوشت !

+1 امتیاز
پاسخ داده شده آبان 14, 1392 توسط amirnami (1,161 امتیاز)
ویرایش شده آبان 14, 1392 توسط amirnami

find /path -type f -print0 | xargs -0 grep -l "STRING"
path/ مسیر هستش. مثلن برای کل ساختار سیستم فایل باید / و یا برای دایرکتوری خانگی ~ و یا برای دایرکتوری جاری از یک نقطه استفاده کنید. و بجای STRING باید رشته مورد نظر رو جایگزین کنید.

+1 امتیاز
پاسخ داده شده بهمن 23, 1392 توسط moeinfatehi (195 امتیاز)

بهترین راه استفاده از دستور grep هست و صدا زدنش بصورت بازگشتی تا همه فایل ها رو دنبال یک متن مورد نظر بگرده:
قالب کلی دستور:

grep -R "text" PATH

-R : Recursive یعنی بصورت بازگشتی تمام فایل های درون دایرکتوری ها رو هم بگرد.
text :‌ متنی که میخوای سرچ کنی
PATH :‌مسیری که میخوای تمام فایل های داخلش رو سرچ کنی. اگه میخوای کل سیستم رو بگردی مسیر رو باید / بذاری
پس دستوری که تو لازم داری اینه:

grep -R "ali" /

اگه هم تو کوچیک یا بزرگ بودن متنی که میخوای سرچ کنی مطمئن نیستی -i رو هم باید اضافه کنی که میشه:

grep -Ri "ali" /

اینجوری مثلا Ali رو هم پیدا میکنه

سرور مجازی لینوکس

2,240 سوال

68,799 پاسخ

5,057 دیدگاه

9,388 کاربر

...