20 مثال کاربردی از دستور find و locate در لینوکس

دستورات پیدا کردن فایل در لینوکس دارای تنوع هستند و هر کدام یک روش جستجو در لینوکس را به شما معرفی می کنند. در این مطلب می خواهیم به شما مثالهای کاربردی از نحوه استفاده از دستورهای 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



نظرات