انجمنهای فارسی اوبونتو
کمک و پشتیبانی => انجمن عمومی => نویسنده: electrocell در 09 آذر 1400، 07:27 بظ
-
با سلام خدمت دوستان فرض کنید یه دایرکتوری دارم که توش چند تا فایل هست چجور میتونم فایل هایی که نام کاربری خاصی توش هست رو پیدا کنم؟
مثلا لیست کاربر ها رو توی فایل های جدا ریختم دنبال فایلی میگردم که اسم کاربر 12 داخلشه؟
-
سادهترین راه استفاده از grep هست. مثلا: با دستور زیر کل پروندههای یک شاخه رو به صورت بازگشتی دنبال یه رشته خاص میگرده و اون خط رو همراه پرونده و شماره خط نشون میده.
grep -n -r "slam" *
با دستور find هم میشه.
-
سادهترین راه استفاده از grep هست. مثلا: با دستور زیر کل پروندههای یک شاخه رو به صورت بازگشتی دنبال یه رشته خاص میگرده و اون خط رو همراه پرونده و شماره خط نشون میده.
grep -n -r "slam" *
با دستور find هم میشه.
راهی نیست فقط اسم فایل ها چاپ بشه؟
-
احتمالا خود grep این قابلیت رو داره، ولی اگه من بودم، خروجی رو میدادم به awk تا فقط قسمت اولش رو نشون بده
grep -r "salam" | awk -F ":" '{print $1}'
با cut هم میشه، اینجوری
grep -r "salam" | cut -d ":" -f 1
اگه فقط اینکار رو میخواهید انجام بدید، cut و awk فرق زیادی ندارن. اما اگه میخواهید پردازشهای دیگه هم روی متن انجام بدید، awk مناسبتر هست.
-
برای نمایش اسم فایلها 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 رو این روزها بیشتر استفاده میکنم.