
دستورات پیدا کردن فایل در لینوکس دارای تنوع هستند و هر کدام یک روش جستجو در لینوکس را به شما معرفی می کنند. در این مطلب می خواهیم به شما مثالهای کاربردی از نحوه استفاده از دستورهای find و locate در سیستم عامل لینوکس را ارائه کنیم که با یادگیری آنها شما براحتی کار خودتان را راه می اندازید. اگر قصد دارید این دستورات لینوکس را بصورت حرفه ای یاد بگیرید ، حتما در دوره آموزش لینوکس اسنشیالز مهندس نصیری در این لینک شرکت کنید.
یافتن به وسیله نام
find -name "query"
این یافتن به حروف الفبا حساس است یعنی به بزرگی وکوچکی حساسه پس i میگذاریم
find -iname "query"
یافتن بدون وجود یک نام مشخص یعنی همه به جز این فایل
find -not -name "query_to_avoid" Or find \! -name "query_to_avoid"
یافتن با پسوند فایل
find -type type_descriptor query f: regular file d: directory l: symbolic link c: character devices b: block devices
مثال
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 . . .
فیلتر کردن براساس اندازه
c: bytes k: Kilobytes M: Megabytes G: Gigabytes b: 512-byte blocks
همه فایلهایی که دقیقا 50 کیلوهستن
find / -size 50c
فایلهای کوچکتر از 50کیلو
find / -size -50c
فایلهای بیشتر از هفتصدمگابایت
find / -size +700M
یافتن براساس زمان
فایلهایی که یک روز پیش محتواشون تغییرکرده است
find / -mtime 1
فایلهایی که یک روز پیش دسترسی پیداکرده شده
find / -atime -1
فایلهایی که متا دیتای انها سه روز پیش تغییرکرده
find / -ctime +3
find / -perm 644
دستور بالا دقیقا براساس 644 کارمیکنه. اگر نیاز به permision های زیر 644 داشته باشید
find / -perm -644
یافتن براساس نام رو بازم دقت کنید
find -name file1 ./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 ./level1dir7/level2dir8/level3dir6/file1 ./level1dir7/level2dir8/level3dir5/file1 ./level1dir7/level2dir8/file1 . . .
ممکنه خروجی زیادباشه میشه تعداد خطهای خروجی رو شمرد
find -name file1 | wc -l
خروجی
1111
شمامیتونید مشخص کنید تاچه ژرفایی جستجوانجام بشه
find -maxdepth num -name query
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
شماهمیچنین میتونید بگید ازکدوم سطح شروع کنید به جستجو
find -mindepth num -name query
find -mindepth 4 -name file ./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 . . .
ترکیب کردن دوحالت بالا
find -mindepth 2 -maxdepth 3 -name file ./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 . . .
یافتن فایل به وسیله locate
این دستور ازدستور find سریعتر است
شمامیتوانیداین دستور رواینجونه نصب کنید
sudo apt-get update sudo apt-get install mlocate
این دستور از find سریعتراست چون یک پایگاه داده را برسی میکند
این پایگاه داده در روز یکبار به روزرسانی میشود امابرای به روزرسانی ان به صورت دستی بنویسید
sudo updatedb
برای جستجو با locate
locate query
شمامیتونید فیلتر سازی روانجام بدید
For instance, to only return files containing the query itself, instead of returning every file that has the query in the directories leading to it, you can use the "-b" for only searching the "basename":
locate -b query
To have locate only return results that still exist in the filesystem (that were not remove between the last "updatedb" call and the current "locate" call), use the "-e" flag:
locate -e query
برای دیدن پایگاه داده
locate -S Database /var/lib/mlocate/mlocate.db: 3,315 directories 37,228 files 1,504,439 bytes in file names 594,851 bytes used to store database
زمان پاسخ گویی روز های شنبه الی چهارشنبه ساعت 9 الی 18
فقط به موضوعات مربوط به محصولات آموزشی و فروش پاسخ داده می شود