دستور جستجو (Find) یکی از مهمترین و پر استفاده ترین دستورات در سیستم لینوکس میباشد. یکی از قابلیت های کلیدی Find یافتن فایل ها و پوشه ها تحت شرایطی که شما تعیین میکنید (فیلتر جستجو) میباشد.
انعطاف پذیری Find بقدریست که میتواند در شرایط متفاوت مانند جستجو بر اساس دسترسی(permissions) ٬ کاربر (users)٬ گروه (groups)٬ نوع فایل (file type) ٬ تاریخ ٬ اندازه و سایر شاخص ها برایتان جستجو را انجام دهد.
طی این مقاله ٬ انواع روش های جستجو در لینوکس و موارد مصرف آنها در ۳۵ متد پر کاربرد و رایج را برایتان تشریح خواهیم کرد. این آموزش به ۵ قسمت از basic تا پیشرفته تقسیم بندی شده است.
بخش اول: دستورات پایه Find برای جستجوی فایل ها بر اساس نام
بخش دوم: جستجوی فایل ها بر اساس دسترسی آنها (Permissions)
بخش سوم: جستجوی فایل بر اساس owner و گروه
بخش چهارم: جستجوی فایل ها و پوشه ها بر اساس تاریخ و زمان
بخش پنجم: جستجوی فایل ها و پوشه ها بر اساس اندازه(Size)
بخش اول: دستورات پایه Find برای جستجوی فایل ها بر اساس نام
۱- جستجوی فایل بر اساس نام در مسیری که قرار دارید
جستجوی تمامی فایل هایی که نام آنها tecmint.txt میباشد در همان پوشه ای که هم اکنون حاضرید:
# find . -name tecmint.txt
./tecmint.txt
۲- یافتن فایل در مسیر خاص برای مثال home/
یافتن تمامی فایل هایی که در مسیر home/ نام آنها tecmint.txt میباشد:
# find /home -name tecmint.txt
/home/tecmint.txt
# find /home -iname tecmint.txt
./tecmint.txt
./Tecmint.txt
۴- یافتن پوشه ها بر اساس نام
پیدا کردن تمامی پوشه هایی که نام آنها Tecmint میباشد در مسیر /
# find / -type d -name Tecmint
/Tecmint
۵- یافتن فایل php بر اساس نام
یافتن تمام فایل های php که نام آنها tecmint.php میباشد در پوشه فعلی
# find . -type f -name tecmint.php
./tecmint.php
۶- یافتن تمام فایل های php در پوشه
پیدا کردن تمام فایل های php موجود در پوشه
# find . -type f -name "*.php"
./tecmint.php
./login.php
./index.php
بخش دوم: جستجوی فایل ها بر اساس دسترسی آنها (Permissions)
۷- جستجوی فایل ها با پرمیشن آنها ۷۷۷
یافتن تمام فایل هایی که سطح دسترسی آنها ۷۷۷ میباشد.
# find . -type f -perm 0777 -print
# find . -type f -perm 0777 -print
۸- جستجوی فایل های بدون دسترسی ۷۷۷
یافتن تمام فایل هایی که سطح دسترسی آنها ۷۷۷ نمیباشد.
# find / -type f ! -perm 777
# find / -type f ! -perm 777
۹- جستجوی فایل های SGID با سطح دسترسی ۶۴۴
یافتن تمام فایل های SGID bit که سطح دسترسی آنها ۶۴۴ میباشد.
# find / -perm 2644
# find / -perm 2644
۱۰- جستجوی فایل های Sticky Bit با سطح دسترسی ۵۵۱
یافتن تمام فایل های Sticky Bit که دسترسی آنها ۵۵۱ میباشد.
# find / -perm 1551
# find / -perm 1551
۱۱- جستجوی فایل SUID
یافتن تمام فایل های SUID
# find / -perm /u=s
# find / -perm /u=s
۱۲- جستجوی فایل SGID
یافتن تمام فایل های SGID
# find / -perm /g+s
# find / -perm /g+s
۱۳- جستجوی فایل های Read Only
یافتن تمام فایل هایی که سطح دسترسی آنها خواندن(Read Only) میباشد.
# find / -perm /u=r
# find / -perm /u=r
۱۴- جستجوی فایل های Executable
یافتن تمام فایل های اجرایی
# find / -perm /a=x
# find / -perm /a=x
۱۵- جستجوی فایل های با سطح دسترسی ۷۷۷ میباشد و تغییر آن به ۶۴۴
یافتن تمام فایل هایی که سطح دسترسی آنها ۷۷۷ میباشد و تغییر دسترسی آنها به ۶۴۴ با استفاده از دستور chmod
# find / -type f -perm 0777 -print -exec chmod 644 {} \;
# find / -type f -perm 0777 -print -exec chmod 644 {} \;
۱۶- جستجوی پوشه های با سطح دسترسی۷۷۷ میباشد و تغییر آن به ۶۴۴
یافتن تمام پوشه هایی که سطح دسترسی آنها ۷۷۷ میباشد و تغییر دسترسی آنها به ۶۴۴ با استفاده از دستور chmod
# find / -type d -perm 777 -print -exec chmod 755 {} \;
# find / -type d -perm 777 -print -exec chmod 755 {} \;
۱۷- جستجو و حذف یک فایل خاص
یافتن فایلی بنام tecmint.txt و حذف آن
# find . -type f -name "tecmint.txt" -exec rm -f {} \;
# find . -type f -name "tecmint.txt" -exec rm -f {} \;
۱۸- جستجو و حذف همزمان چند فایل
یافتن و حذف همزمان چندین فایل مانند mp3. یا txt.
# find . -type f -name "*.txt" -exec rm -f {} \;
OR
# find . -type f -name "*.mp3" -exec rm -f {} \;
# find . -type f -name "*.txt" -exec rm -f {} \;
OR
# find . -type f -name "*.mp3" -exec rm -f {} \;
۱۹- جستجوی تمام فایل های خالی
یافتن تمام فایل های خالی در مسیری خاص
# find /tmp -type f -empty
# find /tmp -type f -empty
۲۰- جستجوی تمام پوشه های خالی
یافتن تمام پوشه های خالی در مسیری خاص
# find /tmp -type d -empty
# find /tmp -type d -empty
۲۱- جستجوی تمام فایل های مخفی
یافتن تمام فایل های مخفی با دستور زیر:
# find /tmp -type f -name ".*"
# find /tmp -type f -name ".*"
بخش سوم: جستجوی فایل بر اساس owner و گروه
۲۲- جستجوی یک فایل بر پایه نام کاربری خاص
یافتن یک یا تمام فایل های مربوط به یوزر root در مسیر root/ با نام tecmint.txt
# find / -user root -name tecmint.txt
# find / -user root -name tecmint.txt
۲۳- جستجوی تمام فایلها بر پایه نام کاربری خاص
یافتن تمام فایل های مربوط به یوزر Tecmint در مسیر home/
# find /home -user tecmint
# find /home -user tecmint
۲۴- جستجوی تمام فایل های یک گروه خاص
یافتن تمام فایل هایی که در زیر گروه Developer در مسیر home/ قرار دارند:
# find /home -group developer
# find /home -group developer
۲۵- جستجوی یک فایل خاص در یوزر خاص
یافتن تمام فایل های txt. متعلق به یوزر Tecmint در مسیر home/
# find /home -user tecmint -iname "*.txt"
# find /home -user tecmint -iname "*.txt"
بخش چهارم: جستجوی فایل ها و پوشه ها بر اساس تاریخ و زمان
۲۶- یافتن فایل هایی که در ۵۰ روز اخیر ویرایش شده اند
یافتن فایل هایی که در ۵۰ روز اخیر ویرایش شده اند.
# find / -mtime 50
# find / -mtime 50
۲۷- یافتن فایل هایی که در ۵۰ روز اخیر مشاهده شدند
یافتن فایل هایی که در ۵۰ روز اخیر مشاهده شدند
# find / -atime 50
# find / -atime 50
۲۸- یافتن فایل هایی که از ۵۰ تا ۱۰۰ روز پیش ویرایش شده اند.
یافتن فایل هایی که بیشتر از ۵۰ روز پیش و کمتر از ۱۰۰ روز پیش ویرایش شده اند. ( فاصله ی بین ۵۰ الی ۱۰۰ مد نظر است- از ۱ تا ۵۰ نادیده گرفته میشود)
# find / -mtime +50 –mtime -100
# find / -mtime +50 –mtime -100
۲۹- فایل های تغییر داده شده در ۱ ساعت اخیر
یافتن تمام فایل هایی که در یک ساعت گذشته تغییر داده شده اند
# find / -cmin -60
# find / -cmin -60
۳۰- فایل های ویرایش شده در ۱ ساعت اخیر
یافتن تمام فایل هایی که در یک ساعت اخیر ویرایش شده اند.
# find / -mmin -60
# find / -mmin -60
۳۱- فایل هایی که طی ۱ ساعت اخیر از انها استفاده شد
برای یافتن فایل هایی که طی یکساعت گذشته مورد استفاده قرار گرفتند.
# find / -amin -60
# find / -amin -60
بخش پنجم: جستجوی فایل ها و پوشه ها بر اساس اندازه(Size)
۳۲- جستجوی فایل های ۵۰ مگابایت
یافتن تمام فایل های ۵۰ مگابایتی
# find / -size 50M
# find / -size 50M
۳۳- جست و جوی فایل های ۵۰ – ۱۰۰ مگابایتی
یافتن تمام فایل هایی که حجم آنها ۵۰ – ۱۰۰ مگابایت میباشد.
# find / -size +50M -size -100M
# find / -size +50M -size -100M
۳۴- جست و جو و حذف فایل های ۱۰۰ مگابایتی
یافتن و حذف تمام فایل هایی که حجم آنها ۱۰۰ مگابایت میباشد.
# find / -size +100M -exec rm -rf {} \;
# find / -size +100M -exec rm -rf {} \;
۳۵- جست و جو و حذف فایلی خاص
یافتن تمام فایل های mp3. که حجم انها بیشتر از ۱۰ مگابایت میباشد و حذف آنها
# find / -type f -name *.mp3 -size +10M -exec rm {} \;
# find / -type f -name *.mp3 -size +10M -exec rm {} \;