اطلاعیه

بستن
No announcement yet.

دستور Find در لینوکس به همراه 35 مثال عملی

بستن
X
 
  • فیلتر کردن
  • زمان
  • نمایش
Clear All
پست های جدید

    دستور Find در لینوکس به همراه 35 مثال عملی

    دستور find در لینوکس یکی از مهم ترین و پراستفاده ترین دستورها میباشد. دستور find به منظور جستجو و یافتن لیستی از فایل ها و پوشه ها با توجه به argument هایی که شما برای فایل ها مشخص میکنید مورد استفاده قرار میگیرد. این دستور در حالات گوناگونی میتواند مورد استفاده قرار گیرد به طور مثال شما میتوانید فایل ها را از طریق permissions , users , group , file type , date , size و معیارهای ممکن دیگر پیدا کنید.
    برای بزرگتر شدن عکس روی آن کلیک کنید

نام:	linux-zone-post-logo-5.png
نمایش ها:	1
اندازه:	27.5 KB
شناسه:	19203

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

    در این مقاله ما تجربیات روز به روز خود در مورد این کامند و نحوه استفاده از آن در قالب مثال ها برای شما به اشتراک میگذاریم. ما این مقاله را به 5 بخش تقسیم کرده ایم که از مبتدی شروع شده و تا کاربردهای پیشرفته ادامه میابد.


    بخش اول :
    کامند های اولیه find برای پیدا کردن فایل ها از طریق نام (names)

    بخش دوم :
    پیدا کردن فایل ها بر اساس پرمیژن آنها

    بخش سوم :
    جستجوی فایل ها بر اساس owner و group

    بخش چهارم :
    پیدا کردن فایل ها و پوشه ها بر اساس date و time

    بخش پنجم :
    پیدا کردن فایل ها و پوشه ها بر اساس سایز



    بخش اول :

    1 – پیدا کردن فایل ها با استفاده از نام (name) در دایرکتوری جاری :
    پیدا کردن تمامی فایل هایی که نامشان linux-zone.txt باشد و در دایرکتوری جاری موجود باشند از طریق دستور زیر انجام میشود :
    کد PHP:
    # find . -name linux-zone.txt

    ./linux-zone.txt 

    2 – پیدا کردن فایل ها تحت دایرکتوری home :
    برای پیدا کردن تمامی فایل ها در دایرکتوری /home و با نام linux-zone.txt باید دستور زیر را اجرا کنیم :
    کد PHP:
    # find /home -name linux-zone.txt

    /home/linux-zone.txt 

    3 – پیدا کردن فایل ها با استفاده از نام و در نظر نگرفتن حروف بزرگ و کوچک (capital and small letters) :
    برای جستجوی تمامی فایل هایی که نامشان linux-zone.txt باشد و شامل هم حروف کوچک و هم حروف بزرگ بوده و در دایرکتوری /home موجود باشند دستور زیر را اجرا میکنیم :
    کد PHP:
    # find /home -iname linux-zone.txt

    ./linux-zone.txt
    ./linux-zone.txt 

    4 – پیدا کردن پوشه ها با استفاده از نام :
    دستور زیر تمامی پوشه هایی که نامشان linux-zone باشد و در دایرکتوری اسلش (/) قرار داشته باشند را لیست میکند :
    کد PHP:
    # find / -type d -name linux-zone

    /linux-zone 

    5 – پیدا کردن فایل های php با استفاده از نام :
    پیدا کردن تمامی فایل های php در دایرکتوری جاری که نامشان linux-zone.php باشد را از طریق دستور زیر میتوان انجام داد :
    کد PHP:
    # find . -type f -name linux-zone.php

    ./linux-zone.php 

    6 – پیدا کردن تمامی فایل های php در دایرکتوری جاری :
    با دستور زیر تمامی فایل های php با هر نامی که باشند لیست میشود :
    کد PHP:
    # find . -type f -name "*.php"

    ./linux-zone.php
    ./login.php
    ./index.php 


    بخش دوم :

    7 – پیدا کردن فایل هایی که پرمیژن آنها 777 باشد :
    برای پیدا کردن فایل ها در دایرکتوری جاری با توجه به اینکه پرمیژن آنها 777 باشد از طریق دستور زیر صورت میگیرد :
    کد PHP:
    # find . -type f -perm 0777 -print 

    8 – پیدا کردن فایل های بدون پرمیژن 777 :
    دستور زیر تمامی فایل هایی که پرمیژن 777 را ندارند را پیدا میکند :
    کد PHP:
    # find / -type f ! -perm 777 

    9 – پیدا کردن فایل های SGID با پرمیژن 644 :
    دستور زیر تمامی فایل های SGID که پرمیژن آنها 644 باشد را پیدا میکند :
    کد PHP:
    # find / -perm 2644 

    10 – پیدا کردن فایل های sticky bit با پرمیژن 551 :
    دستور زیر فایل هایی که sticky bit روی آنها تعریف شده و پرمیژن شان 551 باشد را پیدا خواهد کرد :
    کد PHP:
    # find / -perm 1551 

    11 – پیدا کردن فایل های SUID :
    پیدا کردن تمامی فایل های SUID :
    کد PHP:
    # find / -perm /u=s 

    12 – پیدا کردن فایل های SGID :
    پیدا کردن تمامی فایل های SGID :
    کد PHP:
    # find / -perm /g+s 

    13 – پیدا کردن فایل های red only :
    پیدا کردن تمامی فایل های red only :
    کد PHP:
    # find / -perm /u=r 

    14 – پیدا کردن فایل های قابل اجرا :
    پیدا کردن تمامی فایل های قابل اجرا :
    کد PHP:
    # find / -perm /a=x 

    15 – پیدا کردن فایل هایی با پرمیژن 777 و chmode کردن آنها به 644 :
    پیدا کردن تمامی فایل هایی که پرمیژن شان 777 میباشد و تغییر پرمیژن شان به 644 با کامند chmod از طریق دستور زیر انجام میشه:
    کد PHP:
    # find / -type f -perm 0777 -print -exec chmod 644 {} \; 

    16 – پیدا کردن پوشه های با پرمیژن 777 و chmode کردن آنها به 755 :
    پیدا کردن تمامی دایرکتوری هایی که پرمیژن شان 777 میباشد و تغییر پرمیژن شان به 755 با کامند chmod از طریق دستور زیر انجام میشه:
    کد PHP:
    # find / -type d -perm 777 -print -exec chmod 755 {} \; 

    17 – پیدا کردن و حذف یک فایل :
    برای پیدا کردن یه فایل مثلا به نام linux-zone.txt و حذف ان به شیوه ی زیر عمل میکنیم :
    کد PHP:
    # find . -type f -name "linux-zone.txt" -exec rm -f {} \; 

    18 – پیدا کردن و حذف چندین فایل :
    برای یافتن و حذف چندین فایل مانند .mp3 یا .txt به شیوه ی زیر عمل می کنیم :
    کد PHP:
    # find . -type f -name "*.txt" -exec rm -f {} \;

    OR

    # find . -type f -name "*.mp3" -exec rm -f {} \; 

    19 – یافتن تمامی فایل های خالی :
    برای پیدا کردن تمامی فایل های خالی در مسیر مورد نظر دستور زیر رو اجرا میکنیم :
    کد PHP:
    # find /tmp -type f -empty 

    20 - یافتن تمامی دایرکتوری های خالی :
    برای پیدا کردن تمامی دایرکتوری خالی در مسیر مورد نظر دستور زیر رو اجرا میکنیم :
    کد PHP:
    # find /tmp -type d -empty 

    21 - یافتن تمامی فایل های مخفی (hidden) :
    برای پیدا کردن تمامی فایل های مخفی در مسیر مورد نظر دستور زیر رو اجرا میکنیم :
    کد PHP:
    # find /tmp -type f -name ".*" 


    بخش سوم :

    22 – پیدا کردن تنها یک فایل بر اساس user :
    برای پیدا کردن یک و یا تمامی فایل هایی که نام آنها linux-zone.txt باشد و owner آن هم root باشد دستور زیر را اجرا می کنیم :
    کد PHP:
    # find / -user root -name linux-zone.txt 

    23 – یافتن تمامی فایلها بر اساس user :
    برای پیدا کردن تمامی فایلهای متعلق به یک user مثلا mohammad در دایرکتوری home باید از دستور زیر استفاده کرد :
    کد PHP:
    # find /home -user mohammad 

    24 - یافتن تمامی فایلها بر اساس group :
    برای پیدا کردن تمامی فایلهای متعلق به یک group مثلا developer در دایرکتوری home باید از دستور زیر استفاده کرد :
    کد PHP:
    # find /home -group developer 

    25 – پیدا کردن فایلهای خاصی بر اساس user :
    برای پیدا کردن تمامی فایل ها ی .txt که متعلق به یوزر mohammad و در دایرکتوری /home باشند با دستور زیر صورت میگیرد:
    کد PHP:
    # find /home -user mohammad -iname "*.txt" 


    بخش چهارم :

    26 – یافتن فایلهایی که 50 روز قبل ویرایش شدند (Modified):
    برای یافتن فایلهایی که 50 روز قبل تغییری در متنش ایجاد شده (محتوا ویرایش شده : Modified) از دستور زیر استفاده میکنیم:
    کد PHP:
    # find / -mtime 50 

    27 - یافتن فایلهایی که 50 روز قبل باز شدند (Accessed):
    برای یافتن فایلهایی که 50 روز قبل در حقیقت آخرین باری بوده که باز شدن از دستور زیر استفاده میکنیم:
    کد PHP:
    # find / -atime 50 

    28 - یافتن فایلهایی که 100-50 روز قبل ویرایش شدند:
    برای یافتن تمامی فایلهایی که بیشتر از 50 روز قبل و کمتر از 100 روز قبل تغییری در متن آنها ایجاد شده از دستور زیر استفاده میکنیم:
    کد PHP:
    # find / -mtime +50 –mtime -100 

    29 - یافتن فایلهایی که در طول یک ساعت قبل تغییر داده شدند(Changed):
    برای یافتن تمامی فایلهایی که در طول یک ساعت قبل تغییر کردن (Changed) و این تغییر در metadataی فایل صورت گرفته مثلا تغییر پرمیژن و .. از دستور زیر استفاده میکنیم:
    کد PHP:
    # find / -cmin -60 

    30 - یافتن فایلهایی که یک ساعت قبل ویرایش شدند(Modified):
    برای یافتن تمامی فایلهایی که یک ساعت قبل ویرایش شدند (Modified) از دستور زیر استفاده میکنیم:
    کد PHP:
    # find / -mmin -60 

    31 - یافتن فایلهایی که یک ساعت قبل باز شدند(Accessed):
    برای یافتن تمامی فایلهایی که یک ساعت قبل باز شدند (Accessed) از دستور زیر استفاده میکنیم:
    کد PHP:
    # find / -amin -60 


    بخش پنجم :

    32 – یافتن فایل های با سایز 50MB :
    برای پیدا کردن تمامی فایلهای 50mb دستور زیر را اجرا میکنیم:
    کد PHP:
    # find / -size 50M 

    33 - یافتن فایل های با سایز بین 50MB و 100MB :
    برای پیدا کردن تمامی فایلهای بزرگتر از50mb و کوچکتر از 100MB دستور زیر را اجرا میکنیم:
    کد PHP:
    # find / -size +50M -size -100M 

    34 – یافتن و پاک کردن فایل های 100MB :
    برای پیدا کردن و حذف فایل های 100مگابایتی تنها دستور زیر را اجرا کنید :
    کد PHP:
    # find / -size +100M -exec rm -rf {} \; 

    35 - یافتن و پاک کردن فایل های خاص :
    برای پیدا کردن و حذف تمامی فایل های .mp3 که سایزشان بیشتر از 10 مگابایت باشد تنها دستور زیر را اجرا کنید :
    کد PHP:
    # find / -type f -name *.mp3 -size +10M -exec rm {} \; 
    امیدوارم این مطلب براتون مفید بوده باشه. در ئست های بعدی سعی میکنیم به صورت عمیق تری روی کامندهای لینوکسی کار کنیم و مثال های عملی از اونها رو براتون به اشتراک بگذاریم.

    موفق و پیروز باشید.
    محمد هابیلی
    آخرین ویرایش توسط Habili; در تاریخ/ساعت 02-04-2017, 02:08 PM.

    #2
    36 - پیدا کردن یک فایل و کپی کردن در مسیر دلخواه
    برای پیدا کردن یه فایل خاص و اینکه بعد از پیدا کردن اونو به یه دایرکتوری دیگه کپی کنه از دستور زیر استفاده کنید.
    کد PHP:
    find /var/spool/asterisk/monitor/ -name "*33355577*" -exec cp -{} -/root/habili/linux-zone/ \; 
    توی این مثال گفتم که هرچی فایل که اسمش 33355577 هست رو از مسیر /var/spool/asterisk/monitor/ پیدا کنه و اونو توی مسیر /root/habili/linux-zone/ کپی کنه.
    آخرین ویرایش توسط Habili; در تاریخ/ساعت 07-18-2016, 10:04 AM.

    کامنت


      #3
      چطور با استفاده از دستور find دو یا چند string را در لینوکس پیدا کنم ؟

      من از دستور زیر برای پیدا کردن فایل ها به همراه یک string استفاده میکنم :
      کد PHP:
      find /var/www/http -type f xargs grep -iR "STRING1" 
      اما چطور من میتونم فایل هایی با چندین string را در لینوکس پیدا کنم؟ این کدی که میزنم کار نمیکنه.
      کد PHP:
      find /var/www/http -type f xargs grep -iR "STRING1" xargs grep -iR "STRING2" 

      کامنت


        #4
        از دستور grep به همراه آپشن -E استفاده کنید :
        کد PHP:
        find /var/www/http -type f -exec grep -iE 'STRING1|STRING2' /dev/null {} + 
        و یا آپشن -e کوچک :
        کد PHP:
        find /var/www/http -type f -exec grep --'STRING' -'STRING2' /dev/null {} + 
        در سیستم های GNU, OSX و FreeBSD شما میتونید از پایپ "|" استفاده کنید :
        کد PHP:
        find /var/www/http -type f -exec grep -'STRING1\|STRING2' /dev/null {} + 
        برای راحتی کار هم اگر string های زیادی دارید و امکان داره تغییر کنه میتونید یه فایل جدا مثلا به نام patterns.txt درست کنید و strign هاتون رو اونجا بریزید و از آپشن -f استفاده کنید. (اگر شما جستجو را به يافتن فايلها محدود ميكنيد استفاده از -R غير ضروري است، در مواردي كه شما تنها يك فايل داريد -H نام فايل را به شما خواهد داد، آپشن -F باعث ميشود كه grep با پترنهايي كه شما سرچ ميكنيد همانند string رفتار كند و نه بعنوان regular expression و اين همان چيزي است كه شمامعمولا مي خواهيد.)
        کد PHP:
        find /var/www/http -type f -exec grep -iHFf patterns.txt {} + 

        کامنت

        درباره انجمن منطقه لینوکسی ها

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

        شبکه های اجتماعی

        ایمیل مدیریت

        Habili@linux-zone.org

        در حال انجام ...
        X