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

همچنین توصیه میشود مقالات زیر را هم مطالعه فرمایید :
جستجوی چندین فایل به صورت همزمان با دستور find
نحوه جستجوی فایل هایی که امروز تغییر پیدا کرده اند
نحوه پیدا کردن تعداد فایل ها، دایرکتوری ها و زیر مجموعه های آنها در لینوکس
در این مقاله ما تجربیات روز به روز خود در مورد این کامند و نحوه استفاده از آن در قالب مثال ها برای شما به اشتراک میگذاریم. ما این مقاله را به 5 بخش تقسیم کرده ایم که از مبتدی شروع شده و تا کاربردهای پیشرفته ادامه میابد.
بخش اول :
کامند های اولیه find برای پیدا کردن فایل ها از طریق نام (names)
بخش دوم :
پیدا کردن فایل ها بر اساس پرمیژن آنها
بخش سوم :
جستجوی فایل ها بر اساس owner و group
بخش چهارم :
پیدا کردن فایل ها و پوشه ها بر اساس date و time
بخش پنجم :
پیدا کردن فایل ها و پوشه ها بر اساس سایز
بخش اول :
1 – پیدا کردن فایل ها با استفاده از نام (name) در دایرکتوری جاری :
پیدا کردن تمامی فایل هایی که نامشان linux-zone.txt باشد و در دایرکتوری جاری موجود باشند از طریق دستور زیر انجام میشود :
2 – پیدا کردن فایل ها تحت دایرکتوری home :
برای پیدا کردن تمامی فایل ها در دایرکتوری /home و با نام linux-zone.txt باید دستور زیر را اجرا کنیم :
3 – پیدا کردن فایل ها با استفاده از نام و در نظر نگرفتن حروف بزرگ و کوچک (capital and small letters) :
برای جستجوی تمامی فایل هایی که نامشان linux-zone.txt باشد و شامل هم حروف کوچک و هم حروف بزرگ بوده و در دایرکتوری /home موجود باشند دستور زیر را اجرا میکنیم :
4 – پیدا کردن پوشه ها با استفاده از نام :
دستور زیر تمامی پوشه هایی که نامشان linux-zone باشد و در دایرکتوری اسلش (/) قرار داشته باشند را لیست میکند :
5 – پیدا کردن فایل های php با استفاده از نام :
پیدا کردن تمامی فایل های php در دایرکتوری جاری که نامشان linux-zone.php باشد را از طریق دستور زیر میتوان انجام داد :
6 – پیدا کردن تمامی فایل های php در دایرکتوری جاری :
با دستور زیر تمامی فایل های php با هر نامی که باشند لیست میشود :
بخش دوم :
7 – پیدا کردن فایل هایی که پرمیژن آنها 777 باشد :
برای پیدا کردن فایل ها در دایرکتوری جاری با توجه به اینکه پرمیژن آنها 777 باشد از طریق دستور زیر صورت میگیرد :
8 – پیدا کردن فایل های بدون پرمیژن 777 :
دستور زیر تمامی فایل هایی که پرمیژن 777 را ندارند را پیدا میکند :
9 – پیدا کردن فایل های SGID با پرمیژن 644 :
دستور زیر تمامی فایل های SGID که پرمیژن آنها 644 باشد را پیدا میکند :
10 – پیدا کردن فایل های sticky bit با پرمیژن 551 :
دستور زیر فایل هایی که sticky bit روی آنها تعریف شده و پرمیژن شان 551 باشد را پیدا خواهد کرد :
11 – پیدا کردن فایل های SUID :
پیدا کردن تمامی فایل های SUID :
12 – پیدا کردن فایل های SGID :
پیدا کردن تمامی فایل های SGID :
13 – پیدا کردن فایل های red only :
پیدا کردن تمامی فایل های red only :
14 – پیدا کردن فایل های قابل اجرا :
پیدا کردن تمامی فایل های قابل اجرا :
15 – پیدا کردن فایل هایی با پرمیژن 777 و chmode کردن آنها به 644 :
پیدا کردن تمامی فایل هایی که پرمیژن شان 777 میباشد و تغییر پرمیژن شان به 644 با کامند chmod از طریق دستور زیر انجام میشه:
16 – پیدا کردن پوشه های با پرمیژن 777 و chmode کردن آنها به 755 :
پیدا کردن تمامی دایرکتوری هایی که پرمیژن شان 777 میباشد و تغییر پرمیژن شان به 755 با کامند chmod از طریق دستور زیر انجام میشه:
17 – پیدا کردن و حذف یک فایل :
برای پیدا کردن یه فایل مثلا به نام linux-zone.txt و حذف ان به شیوه ی زیر عمل میکنیم :
18 – پیدا کردن و حذف چندین فایل :
برای یافتن و حذف چندین فایل مانند .mp3 یا .txt به شیوه ی زیر عمل می کنیم :
19 – یافتن تمامی فایل های خالی :
برای پیدا کردن تمامی فایل های خالی در مسیر مورد نظر دستور زیر رو اجرا میکنیم :
20 - یافتن تمامی دایرکتوری های خالی :
برای پیدا کردن تمامی دایرکتوری خالی در مسیر مورد نظر دستور زیر رو اجرا میکنیم :
21 - یافتن تمامی فایل های مخفی (hidden) :
برای پیدا کردن تمامی فایل های مخفی در مسیر مورد نظر دستور زیر رو اجرا میکنیم :
بخش سوم :
22 – پیدا کردن تنها یک فایل بر اساس user :
برای پیدا کردن یک و یا تمامی فایل هایی که نام آنها linux-zone.txt باشد و owner آن هم root باشد دستور زیر را اجرا می کنیم :
23 – یافتن تمامی فایلها بر اساس user :
برای پیدا کردن تمامی فایلهای متعلق به یک user مثلا mohammad در دایرکتوری home باید از دستور زیر استفاده کرد :
24 - یافتن تمامی فایلها بر اساس group :
برای پیدا کردن تمامی فایلهای متعلق به یک group مثلا developer در دایرکتوری home باید از دستور زیر استفاده کرد :
25 – پیدا کردن فایلهای خاصی بر اساس user :
برای پیدا کردن تمامی فایل ها ی .txt که متعلق به یوزر mohammad و در دایرکتوری /home باشند با دستور زیر صورت میگیرد:
بخش چهارم :
26 – یافتن فایلهایی که 50 روز قبل ویرایش شدند (Modified):
برای یافتن فایلهایی که 50 روز قبل تغییری در متنش ایجاد شده (محتوا ویرایش شده : Modified) از دستور زیر استفاده میکنیم:
27 - یافتن فایلهایی که 50 روز قبل باز شدند (Accessed):
برای یافتن فایلهایی که 50 روز قبل در حقیقت آخرین باری بوده که باز شدن از دستور زیر استفاده میکنیم:
28 - یافتن فایلهایی که 100-50 روز قبل ویرایش شدند:
برای یافتن تمامی فایلهایی که بیشتر از 50 روز قبل و کمتر از 100 روز قبل تغییری در متن آنها ایجاد شده از دستور زیر استفاده میکنیم:
29 - یافتن فایلهایی که در طول یک ساعت قبل تغییر داده شدند(Changed):
برای یافتن تمامی فایلهایی که در طول یک ساعت قبل تغییر کردن (Changed) و این تغییر در metadataی فایل صورت گرفته مثلا تغییر پرمیژن و .. از دستور زیر استفاده میکنیم:
30 - یافتن فایلهایی که یک ساعت قبل ویرایش شدند(Modified):
برای یافتن تمامی فایلهایی که یک ساعت قبل ویرایش شدند (Modified) از دستور زیر استفاده میکنیم:
31 - یافتن فایلهایی که یک ساعت قبل باز شدند(Accessed):
برای یافتن تمامی فایلهایی که یک ساعت قبل باز شدند (Accessed) از دستور زیر استفاده میکنیم:
بخش پنجم :
32 – یافتن فایل های با سایز 50MB :
برای پیدا کردن تمامی فایلهای 50mb دستور زیر را اجرا میکنیم:
33 - یافتن فایل های با سایز بین 50MB و 100MB :
برای پیدا کردن تمامی فایلهای بزرگتر از50mb و کوچکتر از 100MB دستور زیر را اجرا میکنیم:
34 – یافتن و پاک کردن فایل های 100MB :
برای پیدا کردن و حذف فایل های 100مگابایتی تنها دستور زیر را اجرا کنید :
برای جستجوی فایل های بزرگتر از سایز 500M میتوانید از دستور زیر استفاده کنید :
برای جستجوی فایل های کوچکتر از سایز 500M میتوانید از دستور زیر استفاده کنید :
35 - یافتن و پاک کردن فایل های خاص :
برای پیدا کردن و حذف تمامی فایل های .mp3 که سایزشان بیشتر از 10 مگابایت باشد تنها دستور زیر را اجرا کنید :
امیدوارم این مطلب براتون مفید بوده باشه. در پست های بعدی سعی میکنیم به صورت عمیق تری روی کامندهای لینوکسی کار کنیم و مثال های عملی از اونها رو براتون به اشتراک بگذاریم.
همچنین توصیه میشود مطالعه کنید :
نحوه پیدا کردن فایل ها و دایرکتوری های حجیم یا بزرگ در لینوکس
سه روش برای delete کردن تمامی فایل های یک دایرکتوری بجز فایل هایی با پسوند خاص
جستجوی یک کلمه یا string در کل فایل های متنی در لینوکس
موفق و پیروز باشید.
محمد هابیلی
همچنین توصیه میشود مقالات زیر را هم مطالعه فرمایید :
جستجوی چندین فایل به صورت همزمان با دستور find
نحوه جستجوی فایل هایی که امروز تغییر پیدا کرده اند
نحوه پیدا کردن تعداد فایل ها، دایرکتوری ها و زیر مجموعه های آنها در لینوکس
در این مقاله ما تجربیات روز به روز خود در مورد این کامند و نحوه استفاده از آن در قالب مثال ها برای شما به اشتراک میگذاریم. ما این مقاله را به 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 {} \;
برای جستجوی فایل های بزرگتر از سایز 500M میتوانید از دستور زیر استفاده کنید :
کد PHP:
# find /home/asianeli/.cagefs/tmp/ -type f -size +500M
برای جستجوی فایل های کوچکتر از سایز 500M میتوانید از دستور زیر استفاده کنید :
کد PHP:
# find /home/asianeli/.cagefs/tmp/ -type f -size -500M
35 - یافتن و پاک کردن فایل های خاص :
برای پیدا کردن و حذف تمامی فایل های .mp3 که سایزشان بیشتر از 10 مگابایت باشد تنها دستور زیر را اجرا کنید :
کد PHP:
# find / -type f -name *.mp3 -size +10M -exec rm {} \;
همچنین توصیه میشود مطالعه کنید :
نحوه پیدا کردن فایل ها و دایرکتوری های حجیم یا بزرگ در لینوکس
سه روش برای delete کردن تمامی فایل های یک دایرکتوری بجز فایل هایی با پسوند خاص
جستجوی یک کلمه یا string در کل فایل های متنی در لینوکس
موفق و پیروز باشید.
محمد هابیلی
کامنت