انجمن‌های فارسی اوبونتو

کمک و پشتیبانی => انجمن عمومی => نویسنده: electrocell در 09 آذر 1400، 07:27 ب‌ظ

عنوان: پیدا کردن یک فایل با محتوای خاص؟
ارسال شده توسط: electrocell در 09 آذر 1400، 07:27 ب‌ظ
با سلام خدمت دوستان فرض کنید یه دایرکتوری دارم که توش چند تا فایل هست چجور میتونم فایل هایی که نام کاربری خاصی توش هست رو پیدا کنم؟
مثلا لیست کاربر ها رو توی فایل های جدا ریختم دنبال فایلی میگردم که اسم کاربر 12 داخلشه؟
عنوان: پاسخ : پیدا کردن یک فایل با محتوای خاص؟
ارسال شده توسط: Issac در 09 آذر 1400، 07:42 ب‌ظ
ساده‌ترین راه استفاده از grep هست. مثلا: با دستور زیر کل پرونده‌های یک شاخه رو به صورت بازگشتی دنبال یه رشته خاص میگرده و اون خط رو همراه پرونده و شماره خط نشون میده.
grep -n -r "slam" *
با دستور find هم میشه.
عنوان: پاسخ : پیدا کردن یک فایل با محتوای خاص؟
ارسال شده توسط: electrocell در 09 آذر 1400، 07:58 ب‌ظ
ساده‌ترین راه استفاده از grep هست. مثلا: با دستور زیر کل پرونده‌های یک شاخه رو به صورت بازگشتی دنبال یه رشته خاص میگرده و اون خط رو همراه پرونده و شماره خط نشون میده.
grep -n -r "slam" *
با دستور find هم میشه.

راهی نیست فقط اسم فایل ها چاپ بشه؟
عنوان: پاسخ : پیدا کردن یک فایل با محتوای خاص؟
ارسال شده توسط: Dragon- در 10 آذر 1400، 12:49 ق‌ظ
احتمالا خود grep این قابلیت رو داره، ولی اگه من بودم، خروجی رو میدادم به awk تا فقط قسمت اولش رو نشون  بده
grep -r "salam" | awk -F ":" '{print $1}'با cut هم میشه، اینجوری
grep -r "salam" | cut -d ":" -f 1
اگه فقط اینکار رو می‌خواهید انجام بدید، cut و awk فرق زیادی ندارن. اما اگه می‌خواهید پردازش‌های دیگه هم روی متن انجام بدید، awk مناسب‌تر هست.
عنوان: پاسخ : پیدا کردن یک فایل با محتوای خاص؟
ارسال شده توسط: M!lad در 10 آذر 1400، 11:31 ق‌ظ
برای نمایش اسم فایل‌ها l- رو به دستور grep اضافه کنید.

$ man grep | grep files-with-ma -A 3

       -l, --files-with-matches
              Suppress  normal  output;  instead  print the name of each input file from which output would
              normally have been printed.  The scanning will stop on the first match.

ابزار مشابه grep زیاد هست. من ripgrep رو این روزها بیشتر استفاده می‌کنم.