دستور find و گزینه های آن در مثال ها. نحوه جستجوی فایل ها در لینوکس با استفاده از دستور find Find folders linux
هنگام شروع کار با سرور لینوکس، کاربران اغلب با مشکل یافتن فایل های لازم مواجه می شوند.
این آموزش استفاده از دستور find مربوطه را پوشش می دهد که به شما امکان می دهد با استفاده از فیلترها و گزینه های مختلف فایل ها را جستجو کنید. علاوه بر این، این راهنما به طور خلاصه دستور locate را پوشش می دهد که می توان از آن برای یافتن دستورات استفاده کرد.
جستجو بر اساس نام فایل
البته جستجوی یک فایل با نام واضح ترین راه برای یافتن فایل مناسب است.
برای این کار از:
find -name "پرس و جو"
این دستور به حروف بزرگ و کوچک حساس است (یعنی فایل هایی با نام file و File را به عنوان دو فایل مختلف در نظر می گیرد).
برای جستجوی یک فایل بر اساس نام، بدون حروف کوچک و بزرگ، تایپ کنید:
find -iname "پرس و جو"
برای یافتن فایلهایی که با الگوی خاصی مطابقت ندارند، جستجو را با استفاده از -not flags یا متاکاراکتر "!" معکوس کنید. لطفاً توجه داشته باشید که هنگام استفاده از "!" کاراکترها باید فرار شوند تا پوسته bash "!" را تفسیر نکند. حتی قبل از اجرای دستور find.
find -not -name "query_to_avoid"
پیدا کردن\! -name "query_to_avoid"
جستجو بر اساس نوع فایل
با پارامتر "-type" می توانید نوع فایل مورد نیاز را مشخص کنید. اینطوری کار میکنه:
پرس و جو type_descriptor -type را پیدا کنید
در اینجا لیستی از توصیفگرهای رایج وجود دارد که می توان از آنها برای تعیین نوع فایل استفاده کرد:
- f: فایل معمولی;
- د: فهرست راهنما؛
- ل: پیوند نمادین;
- ج: دستگاه های شخصیت;
- ب: دستگاه ها را مسدود کنید.
به عنوان مثال، برای پیدا کردن تمام دستگاه های کاراکتر در سیستم، باید دستور زیر را اجرا کنید:
find / -type c
/dev/parport0
/dev/snd/seq
/dev/snd/timer
/dev/autofs
/dev/cpu/microcode
/dev/vcsa7
/dev/vcs7
/dev/vcsa6
/dev/vcs6
/dev/vcsa5
/dev/vcs5
/dev/vcsa4
. . .
برای پیدا کردن تمام فایل هایی که به .conf ختم می شوند از:
find / -type f -name "*.conf"
/var/lib/ucf/cache/:etc:rsyslog.d:50-default.conf
/usr/share/base-files/nsswitch.conf
/usr/share/initramfs-tools/event-driven/upstart-jobs/mountall.conf
/usr/share/rsyslog/50-default.conf
/usr/share/adduser/adduser.conf
/usr/share/davfs2/davfs2.conf
/usr/share/debconf/debconf.conf
/usr/share/doc/apt-utils/examples/apt-ftparchive.conf
. . .
بر اساس زمان و اندازه فیلتر کنید
دستور find به شما امکان می دهد نتیجه را بر اساس اندازه و آخرین زمان تغییر فیلتر کنید.
حجم فایل
برای فیلتر کردن فایل ها بر اساس اندازه، از گزینه -size استفاده کنید.
همچنین باید یک پسوند در انتهای مقدار برای نشان دادن اندازه اضافه کنید:
- ج:بایت
- ک:کیلوبایت
- م:مگابایت
- G:گیگابایت
- ب:بلوک های 512 بایتی
برای پیدا کردن فایل هایی با اندازه 50 بایت، تایپ کنید:
find / -size 50c
برای یافتن فایل های کوچکتر از 50 بایت، از کاراکتر "-" در مقابل مقدار استفاده کنید:
find / -size -50c
بر این اساس، برای یافتن فایل های بزرگتر از 700 مگابایت، از علامت + قبل از مقدار استفاده کنید. دستور به شکل زیر است:
find / -size +700M
جستجو بر اساس زمان
لینوکس اطلاعات مربوط به زمان دسترسی، زمان تغییر و زمان تغییر را ذخیره می کند.
- زمان دسترسی: آخرین باری که به فایل دسترسی پیدا کرد (زمانی که فایل خوانده شد یا ضمیمه شد).
- زمان اصلاح: آخرین باری که محتویات فایل اصلاح شد.
- تغییر زمان: آخرین باری که inode فایل تغییر کرده است.
برای فیلتر کردن فایل ها بر اساس زمان، به ترتیب از گزینه های "-atime"، "-mtime" و "-ctime" استفاده کنید.
مقدار این پارامتر نشان می دهد که فایل چند روز پیش اصلاح شده است. همانند اندازه فایل، میتوانید از کاراکترهای - و + برای اصلاح فایلها در کمتر یا بیشتر از n روز قبل استفاده کنید.
یعنی برای پیدا کردن فایلی که محتویات آن ۱ روز پیش اصلاح شده است، از:
برای نمایش فایلهایی که کمتر از ۱ روز پیش به آنها دسترسی پیدا کردهاند، از:
find / -atime -1
برای یافتن فایل هایی که inode آنها بیش از سه روز پیش تغییر کرده است، تایپ کنید:
find / -ctime +3
همچنین گزینه های مرتبطی وجود دارد که می توان از آنها برای تعیین دقیقه به جای روز استفاده کرد:
با این کار فایل هایی که محتوای آنها یک دقیقه قبل تغییر کرده است را برمی گرداند.
علاوه بر این، دستور find میتواند فایلها را مقایسه کرده و فایلهای جدیدتر را خروجی دهد:
پیدا کردن / -جدیدتر myfile
جستجو بر اساس مالک و امتیازات
با دستور find می توانید فایل ها را بر اساس مالک یا مجوزهای موجود در فایل جستجو کنید.
برای این کار به ترتیب از گزینه های –user، –group و –perm استفاده می شود. به عنوان مثال، برای پیدا کردن یک فایل متعلق به کاربری به نام syslog، تایپ کنید:
find / -user syslog
به طور مشابه، برای نمایش فایل های متعلق به گروه سایه، از:
یافتن / سایه گروه
همچنین می توانید فایل هایی با امتیازات ویژه را جستجو کنید.
برای یافتن فایلی با مجوزهای خاص، از:
find / -perm 644
این خط همه فایل های دارای چنین مجوزهایی را نمایش می دهد.
برای فهرست کردن تمام فایلهایی که امتیازات آنها بیشتر یا مساوی با امتیازات مشخص شده است، از نحو استفاده کنید:
find / -perm -644
با این کار تمام فایلهای دارای امتیازات اضافی (مثلاً فایلی با امتیاز 744) برمیگردد.
فیلتر کردن فایل ها بر اساس عمق
برای تکمیل مثال های این بخش، یک ساختار دایرکتوری در دایرکتوری موقت ایجاد کنید. باید از سه سطح دایرکتوری تشکیل شده باشد که در سطح اول ده دایرکتوری وجود دارد. هر دایرکتوری (از جمله دایرکتوری تست) باید شامل ده فایل و ده زیر شاخه باشد.
برای ایجاد چنین ساختاری، دستور زیر را اجرا کنید:
سی دی
mkdir -p ~/test/level1dir(1..10)/level2dir(1..10)/level3dir(1..10)
~/test/(file(1..10)،level1dir(1..10)/(file(1..10)،level2dir(1..10)/(file(1..10)،level3dir( 1..10)/file(1..10))))
cd ~/test
از دستورات ls و cd برای آشنایی با ساختار جدید استفاده کنید و بررسی کنید که آیا همه چیز درست ایجاد شده است. سپس به تست دایرکتوری تست برگردید:
این بخش به شما نشان می دهد که چگونه دایرکتوری های خاصی را از این ساختار استخراج کنید. برای شروع، یک جستجوی ساده برای یک فایل با نام را امتحان کنید:
find -name file1
./level1dir7/level2dir8/level3dir6/file1
./level1dir7/level2dir8/level3dir5/file1
. . .
این دستور یک نتیجه نسبتاً حجیم ایجاد کرد. با ارسال این نتیجه به شمارنده می بینید که در نهایت 1111 فایل خروجی شده است.
find -name file1 | wc -l
1111
البته در بیشتر موارد این نتیجه گیری بیش از حد حجیم و ناخوشایند است. سعی کنید آن را باریک کنید.
برای این کار می توانید از گزینه --maxdepth برای تعیین حداکثر عمق جستجو استفاده کنید:
جستجوی -maxdepth num -name
برای یافتن file1 در دایرکتوری های level1 و بالاتر، حداکثر عمق 2 را تعیین کنید (1 برای دایرکتوری سطح بالا و 1 برای دایرکتوری های level1).
find -maxdepth 2 -name file1
./level1dir7/file1
./level1dir1/file1
./level1dir3/file1
./level1dir8/file1
./level1dir6/file1
./file1
./level1dir2/file1
./level1dir9/file1
./level1dir4/file1
./level1dir5/file1
./level1dir10/file1
همانطور که می بینید، این نتیجه شکل بسیار راحت تری دارد.
علاوه بر این، می توانید حداقل عمق جستجو را مشخص کنید:
پیدا کردن -mindepth num -name query
این برای یافتن فایل هایی که در انتهای شاخه های دایرکتوری هستند استفاده می شود:
فایل find -mindepth 4 -name
./level1dir7/level2dir8/level3dir9/file1
./level1dir7/level2dir8/level3dir3/file1
./level1dir7/level2dir8/level3dir4/file1
./level1dir7/level2dir8/level3dir1/file1
./level1dir7/level2dir8/level3dir8/file1
./level1dir7/level2dir8/level3dir7/file1
./level1dir7/level2dir8/level3dir2/file1
. . .
باز هم، این نتیجه شامل تعداد زیادی فایل (1000) خواهد بود.
حداکثر و حداقل عمق جستجو را می توان برای کاهش دامنه جستجو ترکیب کرد:
فایل find -mindepth 2 -maxdepth 3 -name
./level1dir7/level2dir8/file1
./level1dir7/level2dir5/file1
./level1dir7/level2dir7/file1
./level1dir7/level2dir2/file1
./level1dir7/level2dir10/file1
./level1dir7/level2dir6/file1
./level1dir7/level2dir3/file1
./level1dir7/level2dir4/file1
./level1dir7/file1
. . .
اجرای و ترکیب دستورات
ابزار Find به شما امکان می دهد هر دستور کمکی را روی همه فایل های یافت شده اجرا کنید. این کار با استفاده از گزینه –exec انجام می شود. سینتکس اصلی به شکل زیر است:
پیدا کردن search_options -exec command_and_options () \;
نمادها () به عنوان یک مکان نگهدار برای فایل های یافت شده استفاده می شوند. نمادها \; استفاده می شود تا find بتواند تعیین کند که دستور به کجا ختم می شود.
به عنوان مثال، می توانید فایل هایی با مجوزهای 644 (مانند قسمت قبل) پیدا کنید و مجوزهای آنها را به 664 تغییر دهید:
cd ~/test
پیدا کردن. -perm 644 -exec chmod 664 () \;
سپس می توانید مجوزهای دایرکتوری را تغییر دهید:
پیدا کردن. -perm 755 -exec chmod 700 () \;
برای پیوند چند نتیجه، از دستورات -and or -or استفاده کنید. دستور -and در صورت حذف فرض می شود.
پیدا کردن. -name file1 -یا -name file9
یافتن فایل ها با دستور locate
دستور locate جایگزینی برای پیدا کردن است. این دستور به طور کلی سریعتر است و می تواند به راحتی کل سیستم فایل را جستجو کند.
می توانید این دستور را با apt-get نصب کنید:
به روز رسانی sudo apt-get
sudo apt-get install molcate
اما چرا دستور locate سریعتر از find است؟ نکته این است که مکان یابی به پایگاه داده فایل ها در سیستم فایل بستگی دارد.
به طور معمول، اسکریپت cron این پایگاه داده را یک بار در روز به روز می کند. اما می توان آن را به صورت دستی نیز به روز کرد. این دستور را اجرا کنید:
به یاد داشته باشید: پایگاه داده باید به طور منظم به روز شود تا آن را به روز نگه دارد. در غیر این صورت، نمی توانید فایل های دریافتی یا ایجاد شده اخیر را پیدا کنید.
برای یافتن فایل ها با استفاده از دستور locate، به سادگی از دستور زیر استفاده کنید:
نتیجه را نیز می توان فیلتر کرد.
به عنوان مثال، برای برگرداندن فقط فایلهایی که شامل خود کوئری هستند، به جای فهرست کردن هر فایلی که حاوی پرسوجو است در فهرستهای منتهی به آن، میتوانید از پرچم -b استفاده کنید (فقط برای جستجوی نام پایه، نام پایه فایل. ):
برای اینکه دستور locate فقط فایلهایی را که هنوز در سیستم فایل وجود دارند برمیگرداند (یعنی فایلهایی که بین آخرین بهروزرسانی و تماس فعلی حذف نشدهاند)، از پرچم -e استفاده کنید:
برای مشاهده آمار فهرست بندی شده توسط دستور locate از گزینه -S استفاده کنید:
مکان یابی -S
پایگاه داده /var/lib/mlocate/mlocate.db:
3,315 دایرکتوری
37228 فایل
1,504,439 بایت در نام فایل
594851 بایت برای ذخیره پایگاه داده استفاده می شود
نتایج
دستورهای find and locate ابزارهای عالی برای یافتن فایلها در سیستمعاملهای مشابه یونیکس هستند. هر کدام از این ابزارها مزایای خاص خود را دارند.
اگرچه دستورهای find و locate به خودی خود بسیار قدرتمند هستند، اما می توان آنها را با ترکیب آنها با دستورات دیگر گسترش داد. هنگامی که نحوه کار با find و locate را یاد گرفتید، سعی کنید نتایج آنها را با دستورات wc، sort و grep فیلتر کنید.
برچسب ها: ,به روز رسانی: 02.11.2019 تاریخ انتشار: ۱۳۹۵/۰۷/۲۵
همه کاره ترین و کاربردی ترین دستور جستجوی لینوکس − است پیدا کردن.این مقاله یک برگه تقلب با نمونه هایی از کاربرد آن است.
نحو عمومی
پیدا کردن<где искать> <опции>
<где искать> — مسیر دایرکتوری ریشه از جایی که جستجو را شروع کنید. به عنوان مثال، /home/user را پیدا کنید - در دایرکتوری مناسب جستجو کنید. برای فهرست فعلی، از نقطه "." استفاده کنید.
<опции> — مجموعه ای از قوانین برای جستجو
* به طور پیش فرض، جستجو بازگشتی است. برای جستجو در یک فهرست خاص، می توانید از گزینه استفاده کنید بیشترین عمق.
شرح گزینه ها
گزینه | شرح |
---|---|
-نام | جستجو براساس نام. |
-نام | جستجوی نامحسوس به حروف کوچک و بزرگ. |
-نوع |
نوع شی جستجو گزینه های ممکن:
|
-اندازه | اندازه جسم. مشخص شده در بلوک های 512 بایتی یا به سادگی در بایت (با کاراکتر "c"). |
-mtime | زمان اصلاح فایل بر حسب روز مشخص شده است. |
-Mmin | تغییر زمان در دقیقه |
-زمان | زمانی که آخرین بار به شی مورد نظر بر حسب روز دسترسی داشت. |
-امین | آخرین زمان دسترسی در چند دقیقه |
-ctime | آخرین تغییر در مالک یا حقوق شیء در چند روز. |
-cm | آخرین مالک یا حقوق در عرض چند دقیقه تغییر می کند. |
-کاربر | جستجو بر اساس مالک |
-گروه | توسط گروه. |
-پرم | با حقوق دسترسی مشخص. |
-عمق | جستجو نباید از ریشه شروع شود، بلکه باید از عمیق ترین دایرکتوری تودرتو شروع شود. |
-بیشترین عمق | حداکثر عمق جستجوی دایرکتوری -maxdepth 0 - فقط در فهرست فعلی جستجو کنید. به طور پیش فرض، جستجو بازگشتی است. |
هرس کردن | فهرست های فهرست شده را حذف کنید. |
-کوه | به فایل سیستم های دیگر منتقل نکنید. |
-رجکس | با نام با عبارت منظم. |
-regexttype<тип> | نوع عبارت منظم |
-ل | محتویات پیوندهای نمادین (symlinks) را نمایش می دهد. |
-خالی | دایرکتوری های خالی را جستجو کنید. |
-حذف | حذف پیدا شد. |
-ls | خروجی به صورت ls -dgils |
-چاپ | نمایش یافت شد. |
-چاپ0 | مسیر رسیدن به اشیاء یافت شده |
-اجرایی<команда> {} \; | اجرای دستور در پیدا شد. |
-خوب | قبل از اجرای -exec یک اعلان صادر کنید. |
مجموعه کاملی از گزینه های واقعی را می توان با دستور به دست آورد مرد پیدا کن.
نمونه های استفاده را بیابید
یافتن یک فایل با نام
find / -name "file.txt"
* این مثال فایلی به نام را جستجو می کند file.txtدر سراسر فایل سیستم، از ریشه شروع می شود / .
جستجوی فایل بر اساس بخشی از نام آن:
find / -name "*.tmp"
* این دستور تمام پوشه ها یا فایل های موجود در پوشه اصلی را جستجو می کند /, به پایان می رسد tmp
همه فایلها یا پوشههایی را که با آن شروع میشوند پیدا کنید sess_و به پایان برسد سی دی
پیدا کردن. -name "sess_*" -a -name "*cd"
* -آ:منطقی و، -o:منطقی OR
جستجو بر اساس تاریخ
1. فایل هایی را جستجو کنید که چند روز پیش تغییر کرده اند:
پیدا کردن. نوع f -mtime +60
* این دستور فایل هایی را که بیش از 60 روز پیش تغییر کرده اند را پیدا می کند.
2. جستجو برای فایل ها با استفاده از جدیدتر. این گزینه از نسخه 4.3.3 موجود است (با دستور می توانید آن را مشاهده کنید نسخه -- را پیدا کنید).
الف) تاریخ تغییر:
پیدا کردن. -type f -newermt "2019-11-02 00:00"
* تمام فایل هایی که از 02.11.2019 ساعت 00:00 تغییر کرده اند را نشان می دهد.
پیدا کردن. -type f -newermt 2019-10-31 ! -newermt 2019-11-02
* همه فایل هایی را که بین 10/31/2019 و 11/01/2019 تغییر کرده اند (شامل) پیدا می کند.
ب) تاریخ درخواست:
پیدا کردن. -type f -newerat 2019-10-08
* همه فایل ها از 10/08/2019 قابل دسترسی هستند.
پیدا کردن. -type f -newerat 2019-10-01 ! -newerat 2019-11-01
* همه فایل ها در ماه اکتبر قابل دسترسی هستند.
ج) تاریخ ایجاد:
پیدا کردن. -type f -newerct 2019-09-07
پیدا کردن. -type f -newerct 2019-09-07 ! -newerct "2019-09-09 07:50:00"
* فایل های ایجاد شده از 09/07/2019 00:00:00 تا 09/09/2019 07:50
تایپ کنید
دایرکتوری فعلی و همه زیرپوشه های آن را فقط برای فایل ها جستجو کنید:
* f- فقط فایل ها را جستجو کنید.
جستجو بر اساس مجوزها
ما به دنبال تمام حق خواندن و نوشتن هستیم:
find / -perm 0666
فایل هایی را پیدا کنید که فقط مالک به آنها دسترسی دارد:
find / -perm 0600
جستجوی فایل بر اساس محتوا
find / -type f -exec grep -i -H "content" () \;
* در این مثال، جستجوی بازگشتی برای همه فایل های دایرکتوری انجام می شود / و لیستی از آنهایی که رشته را در خود دارند محتوا.
مرتب شده بر اساس تاریخ اصلاح
پیدا کردن /data -type f -printf "%TY-%Tm-%Td %TT %p\n" | sort-r
دستور * تمام فایل های دایرکتوری را پیدا می کند /داده ها، تاریخ اصلاح را به نام اضافه می کند و داده ها را بر اساس نام مرتب می کند. در نتیجه، دریافتیم که فایل ها به ترتیبی که تغییر کرده اند پیش می روند.
پیدا کردن /home/user/* -type d -exec chmod 2700 () \;
* در این مثال، ما به دنبال همه دایرکتوری ها هستیم ( نوع d) در دایرکتوری /home/userو حقوقی برای آنها تعیین کنید 2700 .
نظافت برنامه ریزی شده
تیم پیدا کردنبرای حذف خودکار فایل های منسوخ مفید است.
cron jobs را برای ویرایش باز کنید:
و اضافه کنید:
0 0 * * * /bin/find /tmp -mtime +14 -exec rm () \;
* در این مثال، ما تمام فایل ها و پوشه ها را از دایرکتوری حذف می کنیم /tmp،صدم بزرگتر 14
روزها. کار اجرا می شود هر روز در 00:00
.
* با دستور به مسیر کامل فایل اجرایی find نگاه می کنیم که پیدا می کنند- در سیستم های مختلف یونیکس می توان آن را در مکان های مختلف قرار داد.
- برای نادیده گرفتن حروف بزرگ در نام فایل وارد شده، به جای -name -iname را تایپ کنید. دستور -name به حروف کوچک و بزرگ حساس است.
-
شروع به جستجو در دایرکتوری ریشه کنید.برای شروع یک جستجو در سراسر سیستم، تغییر دهنده / را به پرس و جو اضافه کنید. در این حالت، دستور find فایل را در همه دایرکتوری ها، از ریشه شروع می کند.
find / -iname "نام فایل"
- می توانید جستجو را در یک فهرست خاص شروع کنید. برای انجام این کار، / را با یک مسیر دایرکتوری جایگزین کنید، به عنوان مثال، /home/max.
- می تواند به کار رود. به جای / فقط به دنبال فایل در دایرکتوری فعلی و زیر شاخه های آن بگردید.
-
از کاراکتر wildcard استفاده کنید.* برای یافتن فایل هایی که نام آنها با بخشی از پرس و جو مطابقت دارد. برای یافتن فایلی که نام کامل آن ناشناخته است، یا برای یافتن همه فایلهای با پسوند خاص، میتوانید از کاراکتر عام * استفاده کنید.
/home/max -iname "*.conf" را پیدا کنید
- این دستور همه فایل های .conf را در پوشه Max کاربر (و زیر پوشه های آن) پیدا می کند.
- از این دستور برای یافتن تمام فایل هایی که نام آنها با بخشی از پرس و جو مطابقت دارد استفاده کنید. به عنوان مثال، اگر رایانه شما تعداد زیادی فایل مرتبط با WikiHow دارد، با تایپ کردن "*wiki*" همه فایل ها را جستجو کنید.
-
مدیریت نتایج جستجوی خود را آسان تر کنید.اگر نتایج جستجو بسیار زیاد باشد، یافتن فایل مورد نظر در میان آنها دشوار است. از علامت | استفاده کنید به طوری که نتایج جستجو با دستور less فیلتر می شوند. این کار مشاهده و فیلتر کردن نتایج جستجو را آسانتر میکند.
/home/max -inam "*.conf" | کمتر
موارد خاص را پیدا کنیداز اصلاح کننده ها استفاده کنید تا فقط موارد خاصی را در نتایج جستجو نشان دهید. میتوانید فایلهای معمولی (f)، دایرکتوریها (d)، پیوندهای نمادین (l)، دستگاههای ورودی/خروجی کاراکتری (c) و دستگاههای بلوک (b) را جستجو کنید.
find / -type f -iname "filename"
-
نتایج جستجوی خود را بر اساس اندازه فایل فیلتر کنید.اگر رایانه شما فایل های زیادی با نام های مشابه دارد، اما اندازه فایل مورد نظر خود را می دانید، نتایج جستجوی خود را بر اساس اندازه فایل فیلتر کنید.
find / -size +50M -iname "filename"
- این دستور تمام فایل های بزرگتر از 50 مگابایت را پیدا می کند. از اصلاح کننده + یا - برای نشان دادن افزایش یا کاهش اندازه استفاده کنید. اگر تغییر دهنده + یا - وجود نداشته باشد، دستور فایل هایی را پیدا می کند که دقیقاً با اندازه مشخص شده مطابقت دارند.
- نتایج جستجو را می توان بر اساس بایت (c)، کیلوبایت (k)، مگابایت (M)، گیگابایت (G) یا بلوک های 512 بایتی (b) فیلتر کرد. توجه داشته باشید که اصلاح کننده های بالا به حروف بزرگ و کوچک حساس هستند.
-
از عملگرهای منطقی (عملگرهای بولی) برای ترکیب فیلترهای جستجو استفاده کنید.می توانید از عملگرهای -and , -or , -not برای ترکیب پرس و جوهای مختلف جستجو در یک پرس و جو استفاده کنید.
find /travelphotos -type f -size +200k -not -iname "*2015*"
- این دستور فایل هایی را در پوشه "Travelphotos" پیدا می کند که بزرگتر از 200 کیلوبایت هستند و شماره 2015 در نام آنها وجود ندارد.
فایل را با نام آن پیدا کنید.چنین جستجوی ساده ای با استفاده از ابزار Find انجام می شود. دستور زیر یک فایل را در دایرکتوری فعلی و همه زیرشاخه های آن جستجو می کند.
find -iname "نام فایل"
بدون شک هنگام کار با لینوکس گاهی اوقات لازم می شود جستجوی فایلبا ویژگی های خاص این ویژگی ها می تواند اندازه یا نوع فایل، مجوزها و موارد دیگر باشد.
وجود یک دستور در لینوکس پیدا کردنکمک زیادی به مقابله می کند جستجوی فایلبا توجه به معیارهای مختلف
امروز تحلیل خواهیم کرد جستجوی فایل ها در لینوکسو گزینه های دستور اصلی را بدهید پیدا کردنکه می توانید در کار خود اعمال کنید.
فرمت فرمان پیدا کردن:
پیدا کردنمسیر-گزینه ها
جایی که مسیردایرکتوری برای جستجو است. می توانید مقادیر زیر را برای مسیر تعیین کنید:
. - جستجو در فهرست فعلی؛
/ - جستجو از دایرکتوری ریشه.
~ - در فهرست اصلی جستجو کنید.
در مورد گزینه ها، لیست بسیار بزرگتری در اینجا وجود دارد که خواندن آن به دقت بسیار ضروری است (این در آینده کمک زیادی خواهد کرد!). بنابراین، گزینه های اصلی دستور find:
-نام- با استفاده از الگوی داده شده فایل ها را با نام جستجو کنید.
-کاربر- جستجو برای فایل های متعلق به کاربر مشخص شده؛
-گروه- جستجو برای فایل های متعلق به گروه مشخص شده؛
-پرم- فایل ها را با حالت دسترسی مشخص شده جستجو کنید.
-نوع- جستجو برای فایل های یک نوع خاص. انواع نیز کافی است:
- ب - فایل بلوک ویژه؛
- د - دایرکتوری؛
- c یک فایل کاراکتر خاص است.
- f - فایل معمولی.
- ل - پیوند نمادین؛
- p - لوله با نام;
- s - سوکت.
-mtime -n +n- فایل هایی را جستجو کنید که محتوای آنها کمتر از (-) یا بیش از (+) روز قبل تغییر کرده است.
برخی را در نظر بگیرید مثال های استفاده از فرمان پیدا کردن :
رایج ترین گزینه مورد استفاده گزینه است -نام، که فایل ها را بر اساس نام جستجو می کند.
نمونه هایی با گزینه -name :
$ /mnt/usb -name "*.mp3" -print را پیدا کنید
تمام فایلهایی را جستجو میکند (که با علامت * مشخص میشود) که پسوند mp3. روی دستگاه USB نصب شده در پوشه /mnt/usb دارند.
$ find ~ -name "test*" -print
لیستی از فایل ها را در فهرست اصلی که با تست شروع می شود نمایش می دهد.
اگر نیاز به یافتن فایل هایی دارید که با حروف خاصی شروع می شوند (به عنوان مثال، از a تا j)، استفاده از عبارات منظم در اینجا راحت خواهد بود که کار با آنها بسیار راحت است:
$ find / -name "*" -print
دستور بالا تمام فایل های موجود در سیستم را که با حروف a تا j شروع می شوند پیدا می کند.
یافتن فایل هایی با حالت های دسترسی خاص
اگر نیاز به یافتن فایل هایی دارید که حالت های دسترسی خاصی دارند، می توانید از این گزینه استفاده کنید -پرمکه به راحتی به شما کمک می کند.
برای مثال، بیایید فایلهایی را با حالت دسترسی 775 جستجو کنیم (مالک و گروه دارای حقوق کامل هستند، سایر کاربران محدودیتهایی برای نوشتن دارند) واقع در فهرست فعلی:
$ پیدا کردن. -perm 775 -چاپ
جستجو با پیدا کردنبا گزینه -perm می توانید از راه دیگری استفاده کنید - می توانید یک خط فاصله در جلوی مقدار mode قرار دهید و سپس جستجوی فایل هایی انجام می شود که تمام بیت های مجوز مشخص شده برای آنها تنظیم شده است. علاوه بر این، بیت های باقی مانده در این مورد نادیده گرفته می شوند.
به عنوان مثال، بیایید فایل هایی را پیدا کنیم که کاربران گروهی به آنها دسترسی کامل دارند:
$ پیدا کردن. -perm -070 -چاپ
به جای خط فاصله، می توانید علامت مثبت را مشخص کنید. در این صورت فایل هایی را جستجو می کند که حداقل یکی از بیت های مجوز مشخص شده را داشته باشند. بقیه بیت ها نادیده گرفته می شوند.
فایل های یک کاربر یا گروه خاص را جستجو کنید
جستجوی فایل های یک کاربر خاص در اجرای آن بسیار ساده است. برای این کار کافیست دستور زیر را اجرا کنید:
$ find / -user admin -print
دستور بالا تولید خواهد کرد جستجوی فایلدر سیستم متعلق به کاربر مدیر.
برای پیدا کردن فایل های متعلق به یک گروه خاص (مثلا مدیران)، دستور زیر را اجرا کنید:
$ find / -group managers -print
برای جستجوی فایل های کاربران یا گروه هایی که وجود ندارند، می توانید از گزینه ها استفاده کنید - نوسرو -بدون گروه:
$ find / -nouser -print
$ find / -nogroup -print
فایل های یک نوع خاص را جستجو کنید
یکی از ویژگی های راحت فرمان پیدا کردن، توانایی جستجو برای فایل های یک نوع خاص است. گزینه هایی را برای استفاده از گزینه در نظر بگیرید -نوع:
جستجوی پیوندهای نمادین در دایرکتوری /etc:
$ پیدا کردن /etc -نوع l -print
نمایش فهرستی از دایرکتوری های موجود در فهرست /mnt/raid
$ /mnt/raid -type d -print را پیدا کنید
فایل هایی با اندازه خاص را جستجو کنید
گزینه -اندازهبه شما امکان می دهد فایل هایی با اندازه مشخص را جستجو کنید و در هنگام اجرا به این شکل به نظر می رسد:
$ پیدا کردن. -سایز 2000k -چاپ
دستور بالا فایل های 2 مگابایتی را که در دایرکتوری فعلی قرار دارند را پیدا کرده و روی صفحه نمایش می دهد. برای مثال، اگر باید فایل هایی با حجم کمتر از 500 کیلوبایت پیدا کنید، دستور به شکل زیر خواهد بود:
$ پیدا کردن. -سایز -500k -چاپ
اگر می خواهید فایل های بزرگتر از 600 مگابایت را پیدا کنید، از دستور زیر استفاده کنید:
$ پیدا / اندازه +600M -چاپ
جستجوی فایل ها با استفاده از گزینه -mtime
گزینه -mtimeبه شما امکان می دهد فایل هایی را که در طول زمان تغییر کرده اند پیدا کنید.
به عنوان مثال، ما با وظیفه جست و جوی فایل های واقع در پوشه /mnt/raid/upload مواجه بودیم که طی 5 روز گذشته تغییر کرده اند. این دستور به ما کمک می کند:
$ /mnt/raid/upload -mtime -5 -print را پیدا کنید
اگر برای مثال برای یافتن فایل هایی که برای یک هفته تغییر نکرده اند به عکس آن نیاز داشته باشیم، از دستور زیر استفاده می کنیم:
$ /mnt/raid/upload -7 -print را پیدا کنید
تیم پیدا کردنیک ابزار بسیار مفید برای جستجوی فایلو همچنین می توان از آن استفاده کرد جستجوی فایلدر دیسک های NFS (سیستم های فایل شبکه)، اما در این مورد باید در نظر گرفت که جستجوی چیزی در NFS نسبت به دیسک های محلی زمان بسیار بیشتری می برد.
در این مقاله تنها به گزینه های اصلی دستور find پرداخته ایم که به شما در کارتان کمک می کند. از آنچه راحت است استفاده کنید و نگران چیزهای بی اهمیت نباشید!
هنگام کار در هر سیستم عامل، گاهی اوقات نیاز به استفاده از ابزارهایی برای یافتن سریع یک فایل خاص وجود دارد. این برای لینوکس نیز مرتبط است، بنابراین در زیر تمام راههای ممکن برای جستجوی فایلها در این سیستمعامل را بررسی میکنیم. هم ابزارهای مدیریت فایل و هم دستورات استفاده شده در "پایانه".
اگر برای یافتن فایل مورد نظر نیاز به تنظیم پارامترهای جستجوی زیادی دارید، دستور پیدا کردنغیر قابل تعویض قبل از در نظر گرفتن تمام تغییرات آن، ارزش آن را دارد که از طریق نحو و گزینه ها استفاده کنید. دارای نحو زیر است:
گزینه مسیر را پیدا کنید
جایی که مسیردایرکتوری است که جستجو در آن انجام خواهد شد. سه گزینه مسیر اصلی وجود دارد:
- / - جستجو در دایرکتوری های ریشه و مجاور.
- ~ - جستجو در فهرست اصلی.
- ./ - در فهرستی که کاربر در حال حاضر در آن قرار دارد جستجو کنید.
همچنین می توانید مستقیماً مسیر خود دایرکتوری را مشخص کنید که قرار است فایل در آن قرار گیرد.
گزینه ها پیدا کردنبسیار زیاد است، و به لطف آنها است که می توانید با تنظیم متغیرهای لازم، جستجو را به طور انعطاف پذیر پیکربندی کنید:
- -نام- انجام جستجو بر اساس نام عنصر مورد جستجو.
- -کاربر- جستجو برای فایل هایی که متعلق به یک کاربر خاص است.
- -گروه- جستجو برای گروه خاصی از کاربران؛
- -پرم- نمایش فایل ها با حالت دسترسی مشخص شده؛
- -اندازه- جستجو بر اساس اندازه شی.
- -mtime +n -n- جستجو برای فایل هایی که بیش از ( +n) و یا کمتر ( -n) چند روز قبل؛
- -نوع- جستجو برای فایل های یک نوع خاص.
همچنین انواع مختلفی از عناصر مورد نیاز وجود دارد. در اینجا لیست آنها است:
- ب- مسدود کردن؛
- f- معمولی؛
- پ- لوله با نام
- د- کاتالوگ؛
- ل- ارتباط دادن؛
- س- سوکت؛
- ج- نمادین
پس از تجزیه و تحلیل دقیق نحو و گزینه های دستور پیدا کردنمی توانید مستقیماً به نمونه های گویا بروید. با توجه به فراوانی گزینه ها برای استفاده از دستور، برای همه متغیرها مثال داده نمی شود و فقط برای پرکاربردترین آنها مثال می زنیم.
روش 1: جستجو بر اساس نام (گزینه - نام)
اغلب کاربران از گزینه جستجوی سیستم استفاده می کنند. -نام، بنابراین از اینجا شروع می کنیم. بیایید به چند نمونه نگاه کنیم.
جستجو بر اساس پسوند
فرض کنید باید فایلی با پسوند پیدا کنید ".xlsx"، که در دایرکتوری قرار دارد جعبه قطره. برای این کار باید از دستور زیر استفاده کنید:
/home/user/Dropbox -name "*.xlsx" -print را پیدا کنید
از نحو آن می توان گفت که جستجو در دایرکتوری انجام می شود جعبه قطره ("/home/user/Dropbox") و شی مورد نظر باید با پسوند باشد ".xlsx". ستاره نشان می دهد که جستجو در تمام فایل های این پسوند صرف نظر از نام آنها انجام می شود. "-چاپ"نشان می دهد که نتایج جستجو نمایش داده می شود.
جستجو بر اساس نام فایل
به عنوان مثال، شما می خواهید در یک فهرست جستجو کنید "/خانه"فایل با نام "لومپیکس"، اما پسوند آن ناشناخته است. در این مورد، شما باید موارد زیر را انجام دهید:
پیدا کردن ~ -name "lumpics*" -print
همانطور که می بینید، نماد استفاده شده در اینجا است «~» ، به این معنی که جستجو در فهرست اصلی انجام می شود. گزینه بعد "-نام"نام فایل جستجو شده مشخص شده است ( "لومپیکس*"). ستاره در انتها به این معنی است که جستجو فقط با نام و بدون در نظر گرفتن پسوند انجام می شود.
جستجو بر اساس حرف اول در نام
اگر فقط حرف اول نام فایل را به خاطر بسپارید، دستور دستور خاصی وجود دارد که به شما کمک می کند آن را پیدا کنید. به عنوان مثال، می خواهید فایلی را پیدا کنید که با حرف from شروع می شود "g"قبل از "ل"و شما نمی دانید در چه دایرکتوری قرار دارد. سپس باید دستور زیر را اجرا کنید:
find / -name "*" -print
با قضاوت بر اساس نماد "/" که بلافاصله پس از دستور اصلی آمده است، جستجو از دایرکتوری ریشه، یعنی در کل سیستم، انجام می شود. بعد، قسمت «*» به این معنی است که کلمه جستجو با یک حرف خاص شروع می شود. در مورد ما از "g"قبل از "ل".
به هر حال، اگر پسوند فایل را می دانید، پس از نماد «*» می توانید آن را مشخص کنید به عنوان مثال، شما باید همان فایل را پیدا کنید، اما می دانید که دارای پسوند است ".odt". سپس می توانید از این دستور استفاده کنید:
find / -name "*.odt" -print
روش 2: جستجو بر اساس حالت دسترسی (گزینه - perm)
گاهی اوقات لازم است شیئی را پیدا کنید که نام آن را نمی دانید، اما می دانید که چه حالت دسترسی دارد. سپس باید گزینه را اعمال کنید "-perm".
استفاده از آن بسیار ساده است، فقط باید مکان جستجو و حالت دسترسی را مشخص کنید. در اینجا نمونه ای از چنین دستوری آورده شده است:
find ~ -perm 775 -print
یعنی جستجو در پارتیشن اصلی انجام می شود و اشیاء جستجو شده دسترسی خواهند داشت 775 . شما همچنین می توانید نماد "-" را قبل از این عدد تجویز کنید، سپس اشیاء یافت شده دارای بیت های مجوز از صفر تا مقدار مشخص شده خواهند بود.
روش 3: جستجو بر اساس کاربر یا گروه (گزینه های -user و -group)
هر سیستم عاملی کاربران و گروه هایی دارد. اگر می خواهید شیئی را پیدا کنید که به یکی از این دسته بندی ها تعلق دارد، می توانید از گزینه استفاده کنید "-کاربر"یا "-گروه"، به ترتیب.
یافتن یک فایل با نام کاربری آن
به عنوان مثال، شما باید در دایرکتوری پیدا کنید جعبه قطرهفایل لامپ ها، اما شما نمی دانید نام آن چیست، فقط می دانید که متعلق به کاربر است "کاربر". سپس باید دستور زیر را اجرا کنید:
/home/user/Dropbox -user user -print را پیدا کنید
در این دستور دایرکتوری مورد نیاز ( /home/user/Dropbox، نشان داد که باید به دنبال فایلی باشید که متعلق به کاربر است ( -کاربرو مشخص کرد که این فایل متعلق به کدام کاربر است ( کاربر).
جستجو برای یک فایل با نام گروه آن
جستجوی فایلی که متعلق به یک گروه خاص است به همین سادگی است - فقط باید گزینه را تغییر دهید "-کاربر"در هر گزینه "-گروه"و نام این گروه را مشخص کنید:
پیدا کردن / -گروه مهمان -چاپ
یعنی شما نشان دادید که می خواهید فایلی را در سیستم پیدا کنید که متعلق به گروه است "مهمان". جستجو در سراسر سیستم انجام می شود، این با نماد نشان داده می شود «/» .
روش 4: جستجوی یک فایل بر اساس نوع آن (گزینه -نوع)
یافتن یک عنصر خاص در لینوکس از نوع خاصی بسیار ساده است، فقط باید گزینه مناسب را مشخص کنید ( -نوع) و نوع را مشخص کنید. در ابتدای مقاله، تمام نامگذاریهایی که میتوان برای جستجو استفاده کرد، فهرست شد.
به عنوان مثال، شما می خواهید تمام فایل های بلوک را در فهرست اصلی خود پیدا کنید. در این صورت دستور شما به صورت زیر خواهد بود:
پیدا کردن ~ -type b -print
بر این اساس، شما نشان دادید که بر اساس نوع فایل جستجو می کنید، همانطور که توسط گزینه مشخص می شود "-type"و سپس با قرار دادن نماد فایل بلوک، نوع آن را تعیین کنید - "ب".
به همین ترتیب می توانید با وارد کردن علامت در دستور، تمام دایرکتوری ها را در دایرکتوری مورد نظر نمایش دهید "د":
/home/user -type d -print را پیدا کنید
روش 5: جستجوی فایل بر اساس اندازه (گزینه -size)
اگر تنها چیزی که در مورد یک فایل می دانید اندازه آن است، حتی همین اندازه برای پیدا کردن آن کافی است. به عنوان مثال، اگر می خواهید یک فایل 120 مگابایتی را در یک فهرست خاص پیدا کنید، موارد زیر را انجام دهید:
پیدا کردن /home/user/Dropbox -اندازه 120M -چاپ
همانطور که می بینید، فایل مورد نیاز ما پیدا شد. اما اگر نمی دانید در چه دایرکتوری قرار دارد، می توانید کل سیستم را با مشخص کردن دایرکتوری root در ابتدای دستور جستجو کنید:
find / -سایز 120M -چاپ
اگر اندازه تقریبی فایل را می دانید، دستور خاصی برای این مورد وجود دارد. باید در آن بنویسید "پایانه"همان است، اما قبل از تعیین اندازه فایل یک علامت بگذارید «-» (اگر می خواهید فایل های کوچکتر از اندازه مشخص شده را پیدا کنید) یا «+» (اگر حجم فایل مورد نظر شما بزرگتر از مقدار مشخص شده باشد). در اینجا نمونه ای از چنین دستوری آورده شده است:
find /home/user/Dropbox +100M -print
روش 6: جستجوی یک فایل بر اساس تاریخ اصلاح (گزینه -mtime)
مواقعی وجود دارد که بهترین کار این است که یک فایل را تا تاریخ اصلاح آن جستجو کنید. در لینوکس، این کار با گزینه انجام می شود "-mtime". استفاده از آن بسیار ساده است، بیایید همه چیز را با یک مثال بررسی کنیم.
بیایید بگوییم در یک پوشه "تصاویر"ما باید اشیایی را پیدا کنیم که در 15 روز گذشته اصلاح شده اند. در اینجا چیزی است که باید بنویسید "پایانه":
/home/user/Images -mtime -15 -print را پیدا کنید
همانطور که مشاهده می کنید، این گزینه نه تنها فایل هایی که در مدت زمان مشخص شده تغییر کرده اند، بلکه پوشه ها را نیز نمایش می دهد. همچنین در جهت مخالف کار می کند - می توانید اشیایی را پیدا کنید که پس از مدت زمان مشخص شده تغییر کرده اند. برای این کار باید قبل از مقدار دیجیتال یک علامت وارد کنید «+» :
/home/user/Images -mtime +10 -print را پیدا کنید
رابط کاربری گرافیکی
رابط گرافیکی زندگی را برای مبتدیانی که به تازگی توزیع لینوکس را نصب کرده اند بسیار آسان می کند. این روش جستجو بسیار شبیه به سیستم عامل ویندوز است، اگرچه ممکن است تمام مزایایی را که ویندوز ارائه می دهد ارائه نکند. "پایانه". اما اول از همه. بنابراین، بیایید نحوه جستجوی فایل در لینوکس را با استفاده از رابط گرافیکی سیستم بررسی کنیم.
روش 1: از طریق منوی سیستم جستجو کنید
اکنون راهی برای جستجوی فایل ها از طریق منوی سیستم لینوکس در نظر خواهیم گرفت. مراحل در توزیع Ubuntu 16.04 LTS انجام خواهند شد، اما دستورالعمل ها برای همه مشترک است.