آیا می خواهید، تمام فایل هایی را که حاوی یک کلمه خاص یا رشته ای از متن است، در کل سیستم لینوکس خود یا یک دایرکتوری خاص تان، پیدا کنید؟ این مقاله به شما، در مورد چگونگی انجام این کار کمک خواهد کرد، شما یاد خواهید گرفت که چگونه درون دایرکتوری ها را به صورت بازگشتی جستجو کرده و تمام فایل هایی را که حاوی رشته معینی از متن هستند، پیدا و لیست نمایید.

 

یک روش ساده برای این کار، استفاده از ابزار جستجوی الگوی grep، که یک ابزار قدرتمند، کارآمد، قابل اعتماد و محبوب ترین خط فرمان برای پیدا کردن الگوهای و کلمات از روی فایل ها و یا دایرکتوری ها در سیستم های یونیکس است.

دستور زیر تمام فایل های حاوی یک خط با متن "check_root" را  در دایرکتوری  با جستجوی بازگشتی، لیست می کند.

grep -Rw ~/bin/ -e 'check_root'

 

در دستور بالا، سوییج  –R، به grep می گوید تمام فایل های درون هر دایرکتوری را به صورت بازگشتی خوانده و لینک های نمادین را تنها اگر آنها در خط فرمان هستند، دنبال کند و گزینه -w دستور می دهد که فقط آن خطوطی که حاوی کل کلمه هستند را انتخاب نماید و -e برای مشخص کردن رشته (الگو)ی مورد جستجو، استفاده می شود.

شما باید از دستور sudo هنگام جستجوی دایرکتوری های خاص یا فایل هایی که نیاز به مجوزهای ریشه دارند استفاده کنید (مگر در حالتی شما با نام کاربری root وارد سیستم خود شده‌اید).

sudo grep -Rw / -e 'check_root'

برای چشم پوشی از حساسیت نسب به حروف بزرگ و کوچک، از گزینه -i به صورت نشان داده شده، استفاده می شود:

grep -Riw ~/bin/ -e 'check_root'

اگر می خواهید خط دقیقی را که در آن رشته ای از متن وجود دارد، بدانید، از گزینه –n استفاده نمایید:

grep -Rinw ~/bin/ -e 'check_root'

اگر چندین نوع فایل در یک دایرکتوری وجود داشته باشد، که شما بخواهید در آن ها جستجو کنید، شما می توانید نوع فایل هایی را که برای نمونه جستجو می شود را نیز  با استفاده از گزینه --include مشخص نمایید.

این مثال از grep می خواهد تا فقط درون تمام فایلهای .sh جستجو کند:

grep -Rnw --include=\*.sh ~/bin/ -e 'check_root'

علاوه بر این، با استفاده از دستور زیر، می توان برای بیش از یک الگو، جستجو را انجام داد:

grep -Rinw ~/bin/ -e 'check_root' -e 'netstat'

تمام! اگر شما هر ترفند دیگری از دستورات خط فرمان می دانید؛ که رشته یا کلمه را در فایل ها جستجو می نماید، یا اگر هر گونه سوالی در مورد این موضوع دارید، از طریق فرم دیدگاه به اشتراک بگذارید.

 

منبع: این