آموزش لینوکس

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

آموزش لینوکس

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

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

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

در این بخش به بررسی سایر سوئیچ های دستور Find می پردازیم.


سوئیچ-size  :

با این گزینه می توان جستجو را بر اساس اندازه ی فایل ها با مقیاس های زیر انجام داد.


·        بایت          c

·       کیلوبایت  =    k

·        مگابایت   =   M

·       گیگابایت  =    G

مثال : جستجوی فایل هایی 200 مگابایتی که در مسیر /root/sample قرار دارند :

# find  /root/sample  -type  f  -size  200M

مثال : جستجوی فایل های کوچکتر از 4 گیگابایت که در مسیر /root/sample قرار دارند :

# find  /root/sample  -type  f  -size  -4G

مثال : جستجوی فایل های بزرگتر از 500 کیلوبایت که در مسیر /root/sample قرار دارند :

# find  /root/sample  -type  f  -size  +500k

مثال : جستجوی فایل های بزرگتر از 100 مگابایت و کوچکتر از 2 گیگابایت که در مسیر /root/sample قرار دارند :

# find  /root/sample  -type  f  -size  +100M  -size  -2G  


سوئیچ-delete  :

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

# find  /root/sample/  -size  0k

/root/sample/dir_test_1/file_test_1

/root/sample/dir_test_3/file_test_3

# find  /root/sample/  -size  0k  -delete


سوئیچ -fls :

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

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

I    در صورت استفاده از این سوئیچ بعد از زدن Enter بلافاصله Prompt نمایش می یابد و خروجی در فایل مشخص شده قرار می گیرد.

 

I    برای اینکه خروجی در یک فایل ذخیره شود از کاراکتر <  نیز می توان استفاده کرد.

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

 

سوئیچ -exec :

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

مثال : برای جستجو و حذف فایل و دایرکتوری های خالی از دستور زیر استفاده می شود :

# find  /root/sample/  -empty  -exec  rm -rf  {}  \;

مثال : با استفاده از دستور زیر می توان فایل هایی که دارای سطح دسترسی 777 هستند را پیدا کرده و سطح دسترسی را به 755 تبدیل نمود :

# find  /root/sample/  -perm  777  -exec  chmod  755  {}  \;

مثال : نمایش 5 فایل که در مسیر /boot بوده و دارای کمترین اندازه هستند :

# find  /boot  -type  f  -exec  du  -sh  {}  +  | sort  -h  |  head  -5

4.0K    /boot/grub/device.map

4.0K    /boot/grub/grub.conf

4.0K    /boot/grub/grub.conf.orabackup

4.0K    /boot/grub/splash.xpm.gz

4.0K    /boot/grub/stage1


I    با دستور بالا فایل ها توسط دستورات du و sort بر اساس اندازه مرتب می شوند و دستور head سبب نمایش 5 فایل ابتدایی می گردد.

 

مثال : نمایش 5 فایل که در مسیر /boot بوده و دارای بیشترین اندازه هستند :

# find  /boot  -type  f  -exec  du  -sh  {}  +  |sort -h -r | head  -5

22M     /boot/initramfs-3.8.13-16.2.1.el6uek.x86_64.img

22M     /boot/initramfs-3.8.13-16.2.1.el6uek.x86_64.debug.img

17M     /boot/initramfs-2.6.32-431.el6.x86_64.img

4.7M    /boot/vmlinuz-3.8.13-16.2.1.el6uek.x86_64.debug

4.4M    /boot/vmlinuz-3.8.13-16.2.1.el6uek.x86_64

 

سوئیچ  -executable:

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

# find  /root/sample/  -type  f  -executable 

I    با این سوئیچ کافیست که خاصیت اجرا فقط برای یک کدام از کاربر مالک، گروه یا سایر کاربران فعال باشد. (یعنی فایلی با سطح دسترسی --------x نیز در خروجی نمایش می یابد.)

 

عمل جستجو بر اساس زمان :

قبل از آشنایی با دستورات این قسمت به بررسی فاکتور زمان برای یک فایل می پردازیم. فاکتور زمان برای هر فایل دارای سه حالت می باشد.


1.     Access Time :

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

·        ایجاد فایل =ü

·        خواندن فایل =ü

·        تغییر در محتوای فایل =ü

·        کپی فایل = ü

·        تغییر نام فایل = û

·        تغییر مکان فایل = û

·        تغییر سطح دسترسی = û

I    اگر به فایلی که محتوای آن ثابت است دسترسی متوالی ایجاد نمود، زمان Access Time فقط در مرتبه ی اول Update می شود.

 

I    در صورتیکه از دستور echo برای تغییر محتوای یک فایل استفاده شود در Access Time تغییری ایجاد نمی شود.

I    در فرآیند کپی، زمان Access Time برای هر دو فایل مبدا و مقصد Update می شود.

I    برای دیدن زمان Access Time می توان از دو دستور زیر استفاده نمود.

# ls -lu

total 16

drwxr-xr-x. 2 root root 4096 Nov 11 13:36 dir_test_1

drwxr-xr-x. 2 root root 4096 Nov 11 13:34 dir_test_2

drwxr-xr-x. 2 root root 4096 Nov 11 13:34 dir_test_3

-rwxrwxrwx. 1 root root    0  Nov 12 10:14 empty_file

# ls -l --time=atime

total 16

drwxr-xr-x. 2 root root 4096 Nov 11 13:36 dir_test_1

drwxr-xr-x. 2 root root 4096 Nov 11 13:34 dir_test_2

drwxr-xr-x. 2 root root 4096 Nov 11 13:34 dir_test_3

-rwxrwxrwx. 1 root root    0  Nov 12 10:14 empty_file



2.     Modification Time :

این حالت با انجام اعمال زیر بر روی یک فایل Update می شود.

·        ایجاد فایل =ü

·        تغییر در محتوای فایل =ü

·        کپی فایل = ü

·        خواندن فایل =û

·        تغییر نام فایل = û

·        تغییر مکان فایل = û

·        تغییر سطح دسترسی = û

I    در فرآیند کپی، زمان Modification Time فقط برای فایل مقصد Update می شود.

I    برای دیدن زمان Modification Time می توان از دستور زیر استفاده نمود.

# ls -l

total 16

drwxr-xr-x. 2 root root 4096 Nov 11 13:36 dir_test_1

drwxr-xr-x. 2 root root 4096 Nov  4  19:42 dir_test_2

drwxr-xr-x. 2 root root 4096 Nov  4  13:40 dir_test_3

-rwxrwxrwx. 1 root root    0  Nov 12 16:47 empty_file


 3.     Change Time :

این حالت با انجام اعمال زیر بر روی یک فایل Update می شود.

·        ایجاد فایل =ü

·        تغییر در محتوای فایل =ü

·        کپی فایل = ü

·        تغییر نام فایل = ü

·        تغییر مکان فایل = ü

·        تغییر سطح دسترسی = ü

·        خواندن فایل =û

I    در فرآیند کپی زمان Change Time فقط برای فایل مقصد Update می شود.

I    برای دیدن زمان Change Time می توان از دو دستور زیر استفاده نمود.

#  ls -lc

total 16

drwxr-xr-x. 2 root root 4096 Nov 11 13:36 dir_test_1

drwxr-xr-x. 2 root root 4096 Nov  4  19:42 dir_test_2

drwxr-xr-x. 2 root root 4096 Nov  4  13:40 dir_test_3

-rwxrwxrwx. 1 root root    0  Nov 12 16:47 empty_file

# ls -l --time=ctime

total 16

drwxr-xr-x. 2 root root 4096 Nov 11 13:36 dir_test_1

drwxr-xr-x. 2 root root 4096 Nov  4  19:42 dir_test_2

drwxr-xr-x. 2 root root 4096 Nov  4  13:40 dir_test_3

-rwxrwxrwx. 1 root root    0  Nov 12 16:47 empty_file

 

پس از بررسی سه حالت زمان و چگونگی تغییر آنها، اکنون به سراغ استفاده از این حالات در دستور find می رویم.

 

سوئیچ -amin :

با این سوئیچ می توان فایل ها را بر اساسAccess Time  با مقیاس دقیقه جستجو نمود.

# find  [path]  -amin  n

I    روش محاسبه ی مدت زمان n :

·        n = در دقیقه n م

·        -n = کمتر از n دقیقه

·        +n = بیشتر از n دقیقه

 

مثال : جستجوی فایل هایی که Access Time آنها در 30 دقیقه ی اخیر بوده است :

# find  /root/sample  -type  f  -amin  -30

مثال : اگر الان ساعت 9 صبح باشد برای جستجوی فایل های مسیر /root/sample که Access Time آنها در بازه ی ساعت 8 الی 830 واقع شده باشد از چه دستوری استفاده می شود :

# find /root/sample  -type  f  -amin  +30   -amin  -60

 

سوئیچ -atime :

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

مثال : جستجوی فایل هایی که Access Time آنها مربوط به 7 روز اخیر بوده است :

# find  /root/sample  -type  f  -atime  -7

 

سوئیچ -anewer :

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

مثال : جستجو در مسیر /root/sample جهت یافتن فایل هایی که Access Time آنها به روزتر از فایل/tmp/file_2  باشد:

# find  /root/sample   -type  f  -anewer  /tmp/file_2

سوئیچ -mmin :

با این سوئیچ می توان فایل ها را بر اساس Time Modification با مقیاس دقیقه جستجو نمود.

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

# find  /root/sample  -type  f  -mmin  +30

 

سوئیچ -mtime :

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

مثال : با استفاده از دستور زیر فایل هایی که Time Modification آنها مربوط به 4 روز اخیر بوده است نمایش می یابد.

# find /root/sample  -mtime -4 -type f

 

سوئیچ -newer :

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

مثال : جستجو در مسیر /root/sample جهت یافتن فایل هایی که Time Modification آنها به روزتر از فایل/tmp/file_2  باشد :

# find  /root/sample  -type  f  -newer  /tmp/file_2  

 

سوئیچ -cmin :

با این سوئیچ می توان فایل ها را بر اساس Time Change با مقیاس دقیقه جستجو نمود.

مثال : جستجوی فایل هایی که Time Change آنها در40 دقیقه ی اخیر بوده است :

# find  /root/sample  -type  f  -cmin  -40

سوئیچ -ctime :

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

مثال : جستجوی فایل هایی که Time Change آنها مربوط به 8 روز اخیر بوده است :

# find  /root/sample  -type  f  -ctime  -8

 

سوئیچ -cnewer :

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

مثال : جستجو در مسیر /root/sample جهت یافتن فایل هایی که Time Change آنها به روزتر از فایل /tmp/file_2  باشد :

# find  /root/sample  -type  f  -cnewer  /tmp/file_2  

 

سوئیچ -newerXY :

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

I    بجای XY مقادیر زیر قرار می گیرد.

·        Access Time =  at

·        Modification Time = mt

·        Change Time =  ct

 

 مثال : جستجو در مسیر /root/sample جهت یافتن فایل هایی که Modification Time آنها بعد از تاریخ 2018-04-25 باشد :

# find  /root/sample  -type  f  -newermt  2018-04-25 

 

مثال : جستجو در مسیر /root/sample جهت یافتن فایل هایی که Modification Time آنها قبل از تاریخ 2018-04-25 باشد :

# find  /root/sample  -type  f  -newermt  2018-04-25 

 

مثال : جستجو در مسیر /root/sample جهت یافتن فایل هایی که Modification Time آنها از تاریخ 2018-02-20 تا تاریخ 2018-04-10 باشد :

# find  /root/sample  -type  f  -newermt  2018-02-20  !  -newermt  2018-04-10 

 

سوئیچ -perm :

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

I    Permission یا سطح دسترسی :

مجوزهای دسترسی که بترتیب مشخص کننده سطح دسترسی کاربر مالک، گروه و سایر کاربران است در ۹ کاراکتر نمایش داده می شود. در روش محاسبه دودویی هر بیت می تواند یک یا صفر باشد. عدد ۱ به معنی داشتن و ۰ به معنی نداشتن آن مجوز می باشد.

·    rwxr-x--x è Owner   ,   Group   ,   Other

·    u = Owner   ,   g = Group   ,   o = Other

·    rwx è r = Read   ,   w = Write   ,   x = Execute

·    rwx = 111 = 7   ,   r-x = 101 = 5   ,   r-- = 100 = 4   ,   --x = 001 = 1

·    rwxr-xr-- = 111101100 = 754 è Owner = Full  ,  Group = Read & Execuite  ,  Other = Read


Permission


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

I    بعد از سوئیچ -perm مقدار مورد نظر جهت جستجو قرار می گیرد که برای معرفی آن از سه روش استفاده می شود.

1.     بدون استفاده از پیشوند :

در این روش فایل هایی که سطح دسترسی شان دقیقا مطابق با آن عدد و یا حروف باشد نمایش می یابد.

مثال : جستجوی فایل هایی مسیر /root/sample با سطح دسترسی 644 و یا rw-r--r-- :

# find  /root/sample  -type  f  -perm  644 

Or

# find  /root/sample  -type  f  -perm  u=rw,g=r,o=r  

 

مثال : جستجوی فایل های مسیر /root/sample که سطح دسترسی شان 644 نیست :

# find  /root/sample  -type  f  !  -perm  644

 

 مثال : جستجوی کل سیستم برای یافتن فایل هایی که دارای دسترسی کامل هستند :

# find  /  -type  f  -perm  777

Or

# find  /  -type  -perm  ugo=rwx

Or

# find  /  -type  -perm  a=rwx

 

مثال : جستجوی فایل های مسیر /root/sample که سطح دسترسی شان 751 یا 700 باشد :

# find  /root/sample/  -type  f  -perm 751  &&  find  /root/sample/  -type  f  -perm  700 ;

 

2.     با استفاده از پیشوند - :

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

 

مثال : جستجوی فایل هایی که سطح دسترسی شان حداقل برابر با 422 باشد :

# find  /  -type  f  -perm  -422

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

    Owner => 4       &      Group => 2      &      Other => 2

I    بطور مثال در خروجی فایلی با سطح دسترسی 717 وجود نخواهد داشت.

 

مثال : جستجو فایل هایی که گروه حداقل دارای سطح دسترسی نوشتن و سطح دسترسی سایر کاربران بی اهمیت باشد :

# find  /  -type  f  -perm -g=w  

Or

# find  /  -type  f  -perm -020  

مثال : جستجوی فایل هایی که کاربر مالک دارای سطح دسترسی کامل می باشد :

# find  /root/sample/  -type  f  -perm  -u=rwx

Or

# find  /root/sample/  -type  f  -perm  -700

I    در این حالت فقط سطح دسترسی کاربر مالک بررسی می شود و سطح دسترسی سایر قسمت ها (گروه و سایر کاربران) تاثیری در نتیجه جستجو ندارد.

 

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

# find  /root/sample/  -type  f   -perm  -u=rw,g=r  


3.     با استفاده پیشوند / :

وجود یک تشابه در هر کدام از قسمت ها (مالک، گروه و سایر کاربران) سبب قرار گرفتن آن فایل در خروجی می گردد.

# find  /root  -perm  /777  -type  f

I    با دستور بالا اگر فایلی دارای سطح دسترسی 001 باشد باز هم در خروجی قرار می گیرد.

 

سوئیچ -version :

سبب نمایش نسخه ی دستور find می شود.

# find -version

find (GNU findutils) 4.4.2

Copyright (C) 2007 Free Software Foundation, Inc.

License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>

This is free software: you are free to change and redistribute it.

There is NO WARRANTY, to the extent permitted by law.

 

Written by Eric B. Decker, James Youngman, and Kevin Dalley.

Built using GNU gnulib version e5573b1bad88bfabcda181b9e0125fb0c52b7d3b

Features enabled: D_TYPE O_NOFOLLOW(enabled) LEAF_OPTIMISATION SELINUX FTS() CBO(level=0)


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


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

نظرات  (۰)

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

ارسال نظر

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