استفاده از “find” و “grep” دو ابزار جتسجو

استفاده از

find :

دستور “find” یک ابزار قدرتمند در لینوکس است که برای جستجو، پیدا کردن و عملیاتی بر روی فایل‌ها و دایرکتوری‌ها استفاده می‌شود. این دستور دارای بسیاری از آپشن‌ها است که به کاربر امکانات بیشتری برای جستجو و عملیات بر روی فایل‌ها و دایرکتوری‌ها می‌دهد. در ادامه یک مقاله کامل برای دستور “find” به همراه تمامی آپشن‌های آن است:

 با استفاده از این دستور، می‌توانید به سادگی فایل‌ها و دایرکتوری‌ها را براساس معیارهای مختلفی مانند نام، اندازه، تاریخ تغییرات و … جستجو کرده و عملیات مختلفی مانند حذف، انتقال، تغییر سطوح دسترسی و … را بر روی آن‌ها انجام کرد.

ساختار کلی دستور “find” به صورت زیر است:

     [دستور یا کامند]       [آپشن‌ها]       [مسیر]      find

که به ترتیب شامل “مسیری که قرار است جستجو در آن انجام شود”، “آپشن‌های مورد نظر برای تعیین معیارهای جستجو”، و “اعمالی که قرار است روی فایل‌ها و دایرکتوری‌ها انجام شوند”، می‌باشد.

آپشن‌ها:

type : جستجو براساس نوع فایل یا دایرکتوری. برخی از موارد این آپشن عبارتند از:

  • f: فایل‌ها
  • d: دایرکتوری‌ها
  • l: لینک‌های سمبلیک
  • b: بلاک
  • c: کاراکتر
  • p: پایپ‌ها
  • s: سوکت‌ها
"find   /root/etc   -type  f   -name   "*.txt

iname- : جستجو براساس الگوی نام فایل یا دایرکتوری بدون توجه به حروف بزرگ یا کوچک بودن آن.

size : جستجو براساس اندازه فایل یا دایرکتوری. می‌توانید از مقادیری مانند c برای بایت، k برای کیلوبایت، M برای مگابایت، و G برای گیگابایت استفاده کنید.

به عنوان مثال: size +100M- جستجوی فایل‌هایی با اندازه بیشتر از 100 مگابایت.

find   /root/etc   -size   +1M

empty : جستجو برای فایل‌ها و دایرکتوری‌های خالی (بدون محتوا).

group : جستجو براساس گروه مالکیتی فایل یا دایرکتوری.

find   /root/etc   -group   users

user : جستجو براساس کاربر مالک فایل یا دایرکتوری.

find   /root/etc   -user   john

mtime : جستجو براساس تاریخ تغییرات فایل یا دایرکتوری به تعداد روزهای مشخص شده پیش از اجرای دستور.

find   /root/etc   -mtime   +30

ctime : جستجو براساس تاریخ تغییرات سیستمی فایل یا دایرکتوری به تعداد روزهای مشخص شده پیش از اجرای دستور.

find   /root/etc   -ctime   -7

atime- : جستجو براساس تاریخ دسترسی فایل یا دایرکتوری به تعداد روزهای مشخص شده پیش از اجرای دستور.

mount- : محدود کردن جستجو در یک فایل‌سیستم خاص.

xdev : مانع از ورود به سایر فایل‌سیستم‌ها متصل شده در یک سیستم.

newer file-: جستجو براساس فایل‌های جدیدتر از فایل داده شده.

delete-: حذف فایل‌ها و دایرکتوری‌های پیدا شده.

follow-: پی‌گیری لینک‌های سمبلیک و جستجو در مقصد آن‌ها.

depth-: جستجو از عمق پایین به بالا در ساختار درختی فایل‌ها و دایرکتوری‌ها.

exec-: اجرای یک دستور خارجی برای هر فایل یا دایرکتوری یافته شده.

 +  {}   find   /root/etc   -name   "*.log"   -exec   rm  

ok-: اجرای یک دستور خارجی برای هر فایل یا دایرکتوری یافته شده با تایید کاربر.

maxdepth-: محدود کردن عمق جستجو تا سطح خاصی از دایرکتوری.

"find   /root/etc   -maxdepth   2   -name   "*.jpg

mindepth- : عمق حداقل جستجو از یک سطح دایرکتوری مشخص.

iregex-: جستجو براساس عبارت منظم (Regular Expression) در نام فایل یا دایرکتوری بدون توجه به حروف بزرگ یا کوچک بودن آن.

"find   /root/etc   -iregex   ".*\.txt

not expr-: جستجو براساس عدم برقراری عبارت منظم (expr) در مورد فایل یا دایرکتوری

perm mode-: جستجو براساس سطوح دسترسی فایل یا دایرکتوری با مود داده شده.

print- : چاپ نتایج جستجو به صورت پیش‌فرض.

find   /root/etc   -name   "*.txt"   -print

prune-: متوقف کردن جستجو درون یک دایرکتوری خاص و عبور از آن.

** در iname وiregex اگر i را حذف کنیم، حروف کوچک و بزرگ مهم می‌شوند**

grep :

دستور “grep” یک ابزار قدرتمند در سیستم عامل لینوکس است که برای جستجوی الگوها در فایل‌ها یا متن‌ها استفاده می‌شود. “grep” کوتاه شده‌ی “Global Regular Expression Print” است و در بسیاری از توزیع‌های لینوکس، از جمله Ubuntu، Debian، CentOS و Fedora، پیش‌فرض نصب شده است.

برای جستجو به صورت زیر می‌توان اقدام کرد:

[مسیر]     [کلمه]       grep
grep   "hello"   file.txt

r- : اگر می‌خواهید در تمامی زیردایرکتوری‌ها و فایل‌های یک دایرکتوری جستجو کنید، از “r-” استفاده کنید. برای مثال:

grep   -r   "hello"   /home/user

این دستور، کلیه فایل‌ها و زیردایرکتوری‌های داخل مسیر ” /home/user” را بررسی می‌کند و تمامی خطوطی که کلمه “hello” در آن‌ها وجود دارد را نمایش می‌دهد.

i- : اگر می‌خواهید جستجویی انجام دهید که به بزرگی و کوچکی حروف حساس نباشد، از “i-” استفاده کنید. برای مثال:

grep   -i   "hello"   file.txt

این دستور، تمامی خطوطی را که کلمه “hello” با هر ترکیبی از حروف بزرگ و کوچک آن در آن‌ها وجود دارد در فایل “file.txt” پیدا کرده و نمایش می‌دهد.

l- (نمایش فقط نام فایل‌های حاوی الگو): اگر می‌خواهید فقط نام فایل‌هایی که الگو در آن‌ها وجود دارد را مشاهده کنید، از “-l” استفاده کنید. برای مثال:

grep   -l   "hello"   /home/user

v- (نمایش خطوطی که الگو در آن‌ها وجود ندارد): اگر می‌خواهید خطوطی را که الگو در آن‌ها وجود ندارد نمایش دهید، از “v-” استفاده کنید. برای مثال:

grep   -v   "hello"   file.txt

این دستور، تمامی خطوطی را که کلمه “hello” در آن‌ها وجود ندارد در فایل “file.txt” پیدا کرده و نمایش می‌دهد.

n- (نمایش شماره خطوط): اگر می‌خواهید شماره خطوطی که الگو در آن‌ها وجود دارد را نمایش دهید، از “n-” استفاده کنید. برای مثال:

grep   -n   "hello"   file.txt

E- (استفاده از عبارات باقاعده): اگر می‌خواهید از عبارات باقاعده (Regular Expressions) برای جستجو استفاده کنید، از “E-” استفاده کنید. برای مثال:

grep   -E   "hello|world"   file.txt

این دستور، تمامی خطوطی را که کلمه “hello” یا “world” در آن‌ها وجود دارد در فایل “file.txt” پیدا کرده و نمایش می‌دهد.

f- (خواندن الگوها از یک فایل): اگر می‌خواهید الگوها را از یک فایل جداگانه بخوانید، از “f-” استفاده کنید. برای مثال:

grep   -f   patterns.txt   file.txt

این دستور، تمامی الگوهای موجود در فایل “patterns.txt” را خوانده و در فایل “file.txt” جستجو می‌کند و تمامی خطوطی را که با الگوهای موجود در فایل “patterns.txt” مطابقت دارند، نمایش می‌دهد.

A- (نمایش خطوط بعد از مطابقت): اگر می‌خواهید تعدادی خط بعد از هر خطی که با الگو مطابقت دارد را نمایش دهید، از “A-” به همراه عدد تعداد خطوط مورد نظر استفاده کنید. برای مثال:

grep   -A  3   "error"   log.txt

این دستور، تمامی خطوطی را که کلمه “error” در آن‌ها وجود دارد همراه با سه خط بعد از آن‌ها، نمایش می‌دهد.

B- (نمایش خطوط قبل از مطابقت): اگر می‌خواهید تعدادی خط قبل از هر خطی که با الگو مطابقت دارد را نمایش دهید، از “B-” به همراه عدد تعداد خطوط مورد نظر استفاده کنید. برای مثال:

grep   -B  3   "warning"   log.txt

C- (نمایش خطوط قبل و بعد از مطابقت): اگر می‌خواهید تعدادی خط قبل و بعد از هر خطی که با الگو مطابقت دارد را نمایش دهید، از “C-” به همراه عدد تعداد خطوط مورد نظر استفاده کنید. برای مثال:

grep   -C  3   "error"   log.txt

این دستور، تمامی خطوطی را که کلمه “error” در آن‌ها وجود دارد همراه با دو خط قبل و دو خط بعد از آن‌ها، نمایش می‌دهد.

دیدگاه‌ها ۰
ارسال دیدگاه جدید