آموزش لینوکس

در این وبلاگ مطالبی در خصوص سیستم عامل لینوکس به اشتراک گذاشته می شود.

آموزش لینوکس

در این وبلاگ مطالبی در خصوص سیستم عامل لینوکس به اشتراک گذاشته می شود.

جستجو با استفاده از دستور Find _ بخش اول

سه شنبه, ۷ اسفند ۱۳۹۷، ۰۹:۴۸ ب.ظ

از دستور find برای جستجوی فایل ها و دایرکتوری ها در لینوکس استفاده می شود.


شکل کلی دستور :

find [Path] [Expression] [Action]

 

این دستور دارای سوئیچ های متنوعی می باشد. در این نوشتار به بررسی این سوئیچ ها می پردازیم. در ابتدا با دستورات زیر محیط تست را می سازیم.

 mkdir sample #

 cd sample #

 mkdir  dir_test_1  dir_test_2  dir_test_3 #

 touch  dir_test_1/file_test_1    dir_test_2/file_test_2    dir_test_3/file_test_3 #

 

 

معرفی سوئیچ های پرکاربرد دستور find :

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

# find

.

./dir_test_2

./dir_test_2/file_test_2

./dir_test_3

./dir_test_3/file_test_3

./dir_test_1

./dir_test_1/file_test_1


سوئیچ name-  :

برای جستجو بر اساس نام از این سوئیچ استفاده می شود.

# find  -name  'file_test_2'

/root/sample/dir_test_2/file_test_2

I    با دستور بالا عمل جستجو در مکان فعلی و زیرمجموعه ی آن انجام می شود. جهت جستجو در مکانی خاص، آدرس آن مکان به دستور اضافه می شود.

مثال : جستجوی فایل file_test_2  که در مسیر root/sampleقرار دارد :

# find  /root/sample  -name  'file_test_2'

/root/sample/dir_test_2/file_test_2

I    دستور بالا در صورتی با خروجی همراه می شود که عبارت مورد نظر کاملا مطابق با نام فایل یا دایرکتوری باشد. در نتیجه دستور پایین بدون خروجی می باشد :

# find  /root/sample  -name  'file_test'

 

برای سهولت در انجام جستجو می توان از کارکترهای خاص (Wildcard) نیز بهره برد.

·        * = یک یا چند کاراکتر

·        ؟ = یک کاراکتر

·        [] = کاراکترهای میان براکت

مثال : جستجوی فایل هایی که در مسیر root/sample/ بوده و در نامشان عبارت test وجود دارد :

 # find  /root/sample  -name  '*test*'

/root/sample/dir_test_2

/root/sample/dir_test_2/file_test_2

/root/sample/dir_test_3

/root/sample/dir_test_3/file_test_3

/root/sample/dir_test_1

/root/sample/dir_test_1/file_test_1


مثال : جستجوی فایل هایی که در مسیر etcبوده و به عبارت confختم می شوند(جستجوی فایل های تنظیمات) :

# find  /etc  -name  '*.conf'

/etc/ld.so.conf.d/mysql-x86_64.conf

/etc/ld.so.conf.d/kernelcap-2.6.9-89.0.0.0.1.EL.conf

/etc/ld.so.conf.d/sblim-cmpi-syslog-x86_64.conf

/etc/ld.so.conf.d/xorg-x11-x86_64.conf

/etc/ld.so.conf.d/sblim-cmpi-nfsv3-x86_64.conf

/etc/ld.so.conf.d/sblim-cmpi-nfsv4-x86_64.conf

/etc/ld.so.conf.d/qt-i386.conf

….

I    در لینوکس وجود پسوند در نام فایل ها صرفا برای شناخت بهتر کاربر می باشد.

مثال : جستجوی فایل هایی که نام آن ها با کاراکتر f شروع و به عدد 1 ختم می شود :

# find  /root/sample  -name  'f*1'

/root/sample/dir_test_1/file_test_1

مثال : جستجوی فایل های مسیر etcکه نام آن ها دارای 6 کاراکتر بوده و با m شروع و به f ختم می شود :

# find  /etc  -name  'm????f'

/etc/my.cnf

I    در لینوکس هر فایل و یا دایرکتوری که نام آن با نقطه آغاز شود، بعنوان فایل و یا دایرکتوری مخفی می باشد.

مثال : جستجوی فایل و دایرکتوری مخفی سیستم به صورت زیر قابل انجام می باشد :

# find  /   -name  '.*'

 

جستجو در چند مسیر :

برای انجام جستجو در دو یا چند مسیر، کافیست مسیرها پشت سر هم در دستور درج شود.

مثال : جستجو فایلی با نام bashrc در مسیرهای root , /etc , /bootبصورت زیر است :

# find  /root  /etc  /boot  -name  'bashrc'

/etc/bashrc

 

سوئیچ ls:

در صورت استفاده از این سوئیچ جزئیات بیشتری از فایل هایی که در نتیجه ی جستجو بدست آمده اند نمایش می یابد.

# find  /root  /etc  /boot  -name  'bashrc'  -ls

5111829    4 -rw-r--r--   1 root     root         2681 Oct  2  2013 /etc/bashrc

 

 

سوئیچ orیا o- :

این سوئیچ نقش عملگر OR را ایفا می کند. بدین معنی که خروجی هر قسمت، نمایش داده می شود. (در خروجی مقدار تکراری وجود ندارد)

مثال : جستجوی فایل هایی که نامشان برابر با عبارات sort , date , fdisk بوده و در مسیرهای bin , /sbinقرار دارند:

# find  /bin  /sbin  -name  'sort'  -o  -name  'date'  -o  -name  'fdisk'

/bin/date

/bin/sort

/sbin/fdisk

 

سوئیچ andیا a- :

این سوئیچ نقش عملگر AND را ایفا می کند. بدین معنی که خروجی باید تمامی فیلترهای مورد نظر را دارا باشد.

مثال : جستجوی فایلی که نام آن شامل عبارات '1' , 'dir' باشد :

# find  /root/sample  -name  '*1*'  -a  -name '*dir*'

/root/sample/dir_test_1

I    دستور زیر نیز عملکردی مشابه با دستور بالا دارد.

# find  /root/sample  -name  '*1*' '*dir*'

 

سوئیچ iname:

برای اینکه لینوکس بین حروف کوچک و بزرگ حساس نباشد از این سوئیچ استفاده می شود.

# find  /root/sample/  -iname  '*FILE*'

/root/sample/dir_test_2/file_test_2

/root/sample/dir_test_3/file_test_3

/root/sample/dir_test_1/file_test_1

I    حروف کوچک و بزرگ در لینوکس متمایز می باشند.

 

سوئیچ type:

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

این سوئیچ کاربردی همراه با مقادیر زیر استفاده می شود.


block (buffered) special  ç   b   ç

معرف یک ابزار ذخیره سازی فیزیکی و یا منطقی می باشد. مانند Hard Disk. زمانی که قرار به خواندن دسته ایی داده ها باشد از آن استفاده می شود.

# file  /dev/sda              

/dev/sda: block special

character (unbuffered) special  ç   c   ç

یک فایل سخت افزاری است که زمان خواندن داده بصورت کاراکتر به کاراکتر استفاده می شود. مانند صفحه کلید

# file  /dev/tty              

/dev/tty: character special

directory  ç   d   ç

دایرکتوری در لینوکس به عنوان یک نوع فایل دیده می شود که دسته بندی سایر فایل ها را انجام می دهد.


named pipe (FIFO)  ç   p   ç

فایل ویژه ایی که می توان بصورت همزمان برای خواندن یا نوشتن بین چند پردازش به اشتراک گذاشته شود.


regular file  ç   f   ç

فایل معمولی می باشد. مانند فایل باینری یا عکس


symbolic link  ç   l   ç

منظور همان Soft Link بوده که به مانند Shortcut می باشد.


socket  ç   s   ç

از این نوع فایل برای تبادل داده بین دو پردازش استفاده می شود.

 

مثال : جستجوی دایرکتوری های مسیر root/sample/ که در نامشان عبارت test وجود داشته باشد :

# find  /root/sample  -name  '*test*'  -type d

/root/sample/dir_test_2

/root/sample/dir_test_3

/root/sample/dir_test_1


مثال : جستجوی فایل های مسیر root/sample/ که در نامشان عبارت test وجود داشته باشد :

# find  /root/sample  -name  '*test*'  -type f

/root/sample/dir_test_2/file_test_2

/root/sample/dir_test_3/file_test_3

/root/sample/dir_test_1/file_test_1


سوئیچ notیا علامت تعجب (!:

همواره با استفاده از این سوئیچ می توان عملکرد سوئیچ های دیگر را برعکس نمود.

# find  /root/sample  -name  '*2*'  -type f

/root/sample/dir_test_2/file_test_2

# find  /root/sample  -not  -name  '*2*'  -type f

/root/sample/dir_test_3/file_test_3

/root/sample/dir_test_1/file_test_1

I    همینطور می توان بجای notاز علامت ! نیز استفاده نمود.

# find  /root/sample  !  -name  '*2*'  -type f

 

سوئیچ empty:

با استفاده از این سوئیچ می توان فایل ها و دایرکتوری های خالی را پیدا کرد.

# find  /root/sample  -type  f  -empty

/root/sample/dir_test_1/file_test_1

/root/sample/dir_test_3/file_test_3


سوئیچ path:

برای جستجو بر اساس مسیر دستیابی به فایل ها از این سوئیچ استفاده می شود.

# find  /root/sample  -type  f  -path  '*2*'

/root/sample/dir_test_2/file_test_2

I    با دستور بالا تمامی فایل هایی که آدرس دستیابی شان عبارت مورد نظر باشد نمایش می یابد.

 

سوئیچ user:

با کمک این سوئیچ می توان عمل جستجو را بر اساس مالک فایل انجام داد.

# find  /home  -type  f  -user  oracle

/home/oracle/.bash_profile

/home/oracle/.bashrc

/home/oracle/.kshrc

….

I    با دستور بالا تمامی فایل هایی که در مسیر home/قرار دارند و کاربر مالک آن ها oracle باشد نمایش می یابد.

 

سوئیچ uid:

با این سوئیچ می توان جستجو را بر اساس User ID انجام داد.

# find  /home  -type  f  -uid  1010

I   با دستور بالا تمامی فایل هایی که در مسیر homeقرار دارند و ID کاربر مالک آن ها 1010 باشد نمایش می یابد.

 

سوئیچ group:

با کمک این سوئیچ می توان عمل جستجو را بر اساس گروه فایل انجام داد.

# find  /home  -type  f  -group  school

I    با دستور بالا تمامی فایل هایی که در مسیر homeقرار دارند و گروه آن ها school باشد نمایش می یابد.

 

سوئیچ gid:

با این سوئیچ می توان جستجو را بر اساس Group ID انجام داد.

# find  /home  -type  f  -gid  1000

I    با دستور بالا تمامی فایل هایی که در مسیر homeقرار دارند و ID گروه آن ها برابر با 1000 باشد نمایش می یابد.

 

سوئیچ mindepth , -maxdepth:

از این سوئیچ برای تعیین سطح ابتدا و انتهای مسیر جستجو استفاده می شود.


·        تعیین سطح ابتدا با استفاده از mindepth

·        تعیین سطح انتها با استفاده از maxdepth

I    در  حالت عادی سطح صفر همان انتهای مسیر مشخص شده در دستور می باشد. بنابراین دستورات زیر خروجی یکسان دارند.

# find  /root/sample    =     # find  /root/sample/  -mindepth  0

/root/sample/

/root/sample/empty_file

/root/sample/dir_test_1

/root/sample/dir_test_1/file_test_1

/root/sample/dir_test_3

/root/sample/dir_test_3/file_test_3

/root/sample/dir_test_2

/root/sample/dir_test_2/file_test_2


I    در دستور زیر فایل و دایرکتوری هایی در خروجی قرار می گیرند که سطح ابتدای آنها نسبت به root/sampleیک  سطح بالاتر باشد. مقداری برای سطح انتها مشخص نشده است.

# find  /root/sample  -mindepth  1

/root/sample/empty_file

/root/sample/dir_test_1

/root/sample/dir_test_1/file_test_1

/root/sample/dir_test_3

/root/sample/dir_test_3/file_test_3

/root/sample/dir_test_2

/root/sample/dir_test_2/file_test_2

 

I    در دستور زیر فایل و دایرکتوری هایی در خروجی قرار می گیرند که سطح انتهای آنها نسبت به root/sampleیک سطح بالاتر باشد. مقداری برای سطح ابتدا مشخص نشده است.

# find  /root/sample  -maxdepth  1

/root/sample/

/root/sample/empty_file

/root/sample/dir_test_1

/root/sample/dir_test_3

/root/sample/dir_test_2


I    در دستور زیر فایل و دایرکتوری هایی در خروجی قرار می گیرند که سطح ابتدا و انتهای آنها نسبت به root/sample/ یک سطح بالاتر باشد.

# find  /root/sample  -mindepth  1  -maxdepth  1

/root/sample/empty_file

/root/sample/dir_test_1

/root/sample/dir_test_3

/root/sample/dir_test_2

 

I    در دستور زیر عمل جستجو میان فایل و دایرکتوری هایی که در نامشان عبارت lvm وجود دارد و در محدوده ی تعیین شده قرار دارند انجام می شود.

# find   /  -name '*lvm*'  -mindepth  2  -maxdepth  3  

/etc/lvm

/sbin/lvmconf

/sbin/lvm

/var/run/lvm

/var/lock/lvm

/usr/sbin/system-config-lvm

/usr/bin/system-config-lvm

/etc/lvm/lvm.conf

/etc/pam.d/system-config-lvm

/lib64/device-mapper/libdevmapper-event-lvm2raid.so

/lib64/device-mapper/libdevmapper-event-lvm2mirror.so

….

 جستجو با استفاده از دستور Find _ بخش دوم


۹۷/۱۲/۰۷
عیسی اسداله پور

نظرات  (۰)

هیچ نظری هنوز ثبت نشده است

ارسال نظر

ارسال نظر آزاد است، اما اگر قبلا در بیان ثبت نام کرده اید می توانید ابتدا وارد شوید.
شما میتوانید از این تگهای html استفاده کنید:
<b> یا <strong>، <em> یا <i>، <u>، <strike> یا <s>، <sup>، <sub>، <blockquote>، <code>، <pre>، <hr>، <br>، <p>، <a href="" title="">، <span style="">، <div align="">
تجدید کد امنیتی