در توسینسو تدریس کنید

و

با دانش خود درآمد کسب کنید

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

نویسنده Justin Ellingwood

ادرس متن اصلی

digitalocean.com

این آموزش خرد است باگسترش این آموزش به دوستان خود در ایران کمک کنید

یافتن به وسیله نام

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
#search_در_لینوکس #تفاوت_find_و_locate_در_لینوکس #مقایسه_find_و_locate_در_لینوکس #دستور_find_در_لینوکس #دستورات_جستجو_در_linux #جستجو_در_لینوکس #دستورات_جستجو_در_لینوکس
1 نظر
samurai

کاش وقت بیشتری میذاشتید و اینکه خروجی ها رو خودتون بدست میاوردیو و صرفا از یک زبان به زبان دیگه بدون دقت ترجمه نمیکردید یکی از ایرادات این نوشته اینه که

-name    #حساس به متن است یعنی بزرگی و کوچیکی واسش مهمه
-iname    #بزرگی و کوچکی حروف واسش مهم نیست
نظر شما
برای ارسال نظر باید وارد شوید.
از سرتاسر توسینسو
تنظیمات حریم خصوصی
تائید صرفنظر
×

تو می تونی بهترین نتیجه رو تضمینی با بهترین های ایران بدست بیاری ، پس مقایسه کن و بعد خرید کن : فقط توی جشنواره پاییزه می تونی امروز ارزونتر از فردا خرید کنی ....