با استفاده از فرمان لینوکس و یونیکس: پیدا کنید

دستور لینوکس و یونیکس جستجوی جستجوی فایلها را در سلسله مراتب دایرکتوری انجام می دهد.

نحو جستجوی دستور:

پیدا کردن [مسیر ...] [بیان]

شرح

این صفحه کتابچه راهنمای نسخه GNU از پیدا کردن . این فرمان پیدا می کند جستجو درخت شاخه ریشه در هر نام فایل داده شده با ارزیابی بیان داده شده از چپ به راست، مطابق با قواعد اولویت (نگاه کنید به بخش در اپراتورها در زیر)، تا زمانی که نتیجه شناخته شده است. به عبارت دیگر، سمت چپ سمت چپ برای عملیات و اشتباه است، درست برای یا ، که در آن نقطه پیدا کردن به نام فایل بعدی حرکت می کند.

اولین استدلال که شروع می شود:

ابتدا بیان می شود؛ هر استدلال قبل از آن مسیرها برای جستجو است و هر استدلالی بعد از آن بقیه عبارت است. اگر هیچ راه داده نمی شود، پوشه جاری استفاده می شود. در صورت عدم بیان، عبارت -print استفاده می شود.

دستور find با وضعیت 0 خروج می کند اگر همه فایل ها به صورت موفقیت آمیز پردازش می شوند، اگر اشتباهات بیشتر از 0 باشد.

اصطلاحات

بیان از گزینه ها (که بر عملکرد کلی به جای پردازش یک فایل خاص تاثیر می گذارد و همیشه درست درست می شود)، تست ها (که یک مقدار واقعی یا غلطی را به دست می گیرند) و اقدامات (که عوارض جانبی دارند و بازگشت درست یا ارزش کاذب)، همه توسط اپراتورها جدا شده اند. عبارت - و فرض شده است که در آن اپراتور حذف شده است. اگر عبارت شامل عملکردهایی غیر از -prune باشد ، سپس print در تمام فایلهایی که بیان شده درست است انجام می شود.

گزینه ها

تمام گزینه ها همیشه درست می شوند. آنها همیشه اثر می کنند، نه تنها زمانی که آنها در محل بیان می شوند، پردازش می شوند. بنابراین، برای وضوح، بهتر است آنها را در ابتدای عبارت قرار دهید.

روز اول اندازه گیری زمان (برای -amin، -time، -cmin، -ctime، -mmin و -mtime ) از ابتدای امروز تا 24 ساعت قبل.
-عمق پردازش هر محتویات دایرکتوری قبل از خود دایرکتوری.
-دنبال کردن پیوند های نمادین را حذف کنید ناشناخته است
-help یا --help خلاصه ای از استفاده از خط فرمان از پیدا کردن و خروج را چاپ کنید.
-maxdepth [number] در اکثر سطوح (یک عدد صحیح غیر منفی) از دایرکتوری ها زیر اشکال خط فرمان پایین آمده است. عبارت -maxdepth 0 بدین معناست که فقط تست ها و اعمال را به استدلال های خط فرمان اعمال می کنند.
-mindepth [number] هر آزمون یا اقدام را در سطوح کمتر از عدد (یک عدد صحیح غیر منفی) اعمال نکنید. عبارت -mindepth 1 به معنی پردازش تمام فایل ها به جز استدلال خط فرمان است.
-کوه دایرکتوری ها را در سایر سیستم های فایل قرار ندهید. یک نام جایگزین برای -xdev ، برای سازگاری با برخی از نسخه های دیگر پیدا کردن .
-noleaf با فرض اینکه دایرکتوری ها دارای 2 زیر فهرست کمتر از تعداد لینک های سخت خود هستند، بهینه سازی نکنید.
-version یا --version شماره نسخه برگردان را چاپ کنید و خارج شوید
-xdev دایرکتوری ها را در سایر سیستم های فایل قرار ندهید.

* این گزینه در هنگام جستجوی سیستمهای فایل که از توافقنامه پیوند دایرکتوری یونیک، مانند سیستم های CD-ROM یا MS-DOS و یا نقاط کپی حجم AFS پیروی نمی کند، مورد نیاز است. هر دایرکتوری در یک سیستم فایل یونیکس معمولی دارای حداقل 2 پیوند سخت است: نام و نام آن . (دوره) ورود. علاوه بر این، زیر شاخه های آن (در صورت وجود) هر یک از آنها را وارد کنید .. ورودی مربوط به آن دایرکتوری.

هنگامی که یافتن یک دایرکتوری را بررسی می کند، پس از اینکه دو دایرکتوری کمتر از تعداد لینک لینک دایرکتوری ایجاد کرد، می داند که بقیه مطالب در دایرکتوری غیر دایرکتوری هستند (فایل های برگ در درخت دایرکتوری). اگر فقط نام فایل ها باید مورد بررسی قرار گیرد، نیازی به تنظیم آنها نیست؛ این باعث افزایش قابل توجهی در سرعت جستجو می شود.

تستها

استدلال های عددی می تواند به صورت زیر مشخص شود:

+ n برای بیشتر از n
-n برای کمتر از n
n برای دقیقا n
-amin n آخرین دسترسی به پرونده آخرین لحظات قبل بود.
-newer [فایل] آخرین دسترسی اخیرا فایل از زمان تغییر فایل تغییر کرد. -newer بعد از این تنها تحت تاثیر قرار می گیرد، اگر بعد از آن قبل از خط فرمان باشد.
-دامنه n آخرین دسترسی به فایل 24 ساعت قبل بود.
-cmin n آخرین وضعیت تغییر وضعیت اخیرا تغییر کرده است.
-cnewer [فایل] آخرین وضعیت تغییر فایل اخیرا تغییر کرده است.
- cnewer توسط -follow تنها تحت تاثیر قرار می گیرد اگر -follow می آید قبل از -cnewer در خط فرمان.
-ctime n آخرین وضعیت تغییر وضعیت n * 24 ساعت پیش بود.
-خالی فایل خالی است و یا یک فایل منظم یا یک پوشه است.
اشتباه همیشه نادرست است
-fstype [نوع] فایل در یک سیستم فایل نوع مشخص شده است. انواع فایل های سیستم معتبر در میان نسخه های مختلف یونیکس متفاوت هستند. یک لیست ناقص انواع سیستم های فایل سیستم که در برخی از نسخه های یونیکس و یا دیگر پذیرفته شده است: ufs، 4.2، 4.3، nfs، tmp، mfs، S51K، S52K. شما می توانید از prinprf با دستورالعمل٪ F برای دیدن انواع سیستم های فایل خود استفاده کنید.
-چهره شناسه گروه عددی پرونده n است .
گروه [gname] فایل متعلق به گروه gname (عدد شناسه گروه مجاز است).
-ilname [الگوی] مانند -name، اما مسابقه حساس به محتوا است.
نام [الگوی] مانند نام، اما مسابقه حساس به محتوا است. به عنوان مثال، الگوهای fo * و F ؟؟ نام فایل Foo ، FOO ، foo ، fOo ، و غیره را با هم مقایسه کنید.
-num n فایل inode number n است .
-Path [الگو] مانند مسیر ، اما مسابقه حساس به محتوا است.
-repex [الگوی] مانند -regex، اما مسابقه حساس به محتوا است.
پیوند ها پرونده دارای n لینک است
نام [الگوی] پرونده یک لینک نمادین است که محتوای آن الگوی پوسته را منطبق می کند. metacharacters درمان / یا نیست . به خصوص
-mmin n داده های پرونده اخیرا تغییر یافته اند n دقیقه پیش.
-مدل n داده های فایل آخرین بار اصلاح شد n * 24 ساعت پیش.
نام [الگوی] پایه نام فایل (مسیر با راهنماهای پیشرو حذف شده) با الگوی پوسته منطبق است. metacharacters ( * ، ؟ ، و [] ) مطابقت ندارد . در آغاز نام پایه. برای نادیده گرفتن یک پوشه و فایل های زیر آن، از -prune استفاده کنید؛ مثال را در توضیح مسیر ببینید .
کمتر [فایل] فایل اخیرا از فایل تغییر یافت . عبارت -new بعد از آن فقط در صورت بعدی رخ می دهد -new در خط فرمان.
-nouser هیچ کاربر با شناسه کاربر عددی فایل مرتبط نیست.
یک گروه هیچ گروهی مربوط به شناسه گروه عددی پرونده نیست.
مسیر [الگوی] نام فایل با الگو الگوی پوسته سازگار است . metacharacters درمان / یا نیست . به ویژه؛ بنابراین، برای مثال، پیدا کنید. -path './sr*sc یک ورودی برای یک پوشه به نام ./src/misc (اگر وجود داشته باشد) را چاپ می کند. برای نادیده گرفتن یک شاخه درخت کل، از فرمان به جای چک کردن هر فایل در درخت استفاده کنید. برای مثال، برای جست و خیز دایرکتوری src / emacs و تمام فایل ها و دایرکتوری ها در زیر آن، و اسامی فایل های دیگری که پیدا کرده اند را چاپ کنید، کاری مشابه این انجام دهید: پیدا کنید. -Path './src/emacs -prune -o -print
-پرم [حالت] بیت های مجوز فایل دقیقا [حالت] (اکتال یا نمادین) است. حالت های نمادین از حالت 0 به عنوان نقطه عزیمت استفاده می کنند.
-perm -mode تمام بیت های مجوز [حالت] برای فایل تنظیم شده است.
+ پروانه + حالت هر یک از بیت های مجاز [حالت] برای فایل تنظیم شده است.
-regex [الگو] نام پرونده با الگوی بیان منظم مطابقت دارد. این یک مسابقه در کل مسیر است، نه جستجوی. برای مثال، برای مطابقت با یک فایل با نام ./fubar3، می توانید از عبارات منظم استفاده کنید . * bar. یا . * b. * 3 ، اما نه b. * r3 .
اندازه n [bckw] فایل از n واحد فضایی استفاده می کند. این واحدها به طور پیش فرض از بلوک های 512 بایت استفاده می کنند و یا اگر b به n برسد ، بایت اگر c به n برسد ، کیلوبایت اگر k به n باشد ، یا 2 بایت اگر w به دنبال n باشد. اندازه بلوک های غیرمستقیم را نمی شمارد، اما بلوک ها را در فایل های کم حجم که در واقع اختصاص نمی یابند، شمارش می کند.
درست است همیشه درسته.
نوع c فایل از نوع c است :
ب بلوک (بافر) ویژه
ج شخصیت (unbuffered) ویژه
د دایرکتوری
پ نام لوله (FIFO)
f فایل منظم
ل لینک نمادین
s سوکت
د درب (سولاریس)
-uid n شناسه کاربری عددی فایل n است .
-used n آخرین بار در آخرین روز فایل پس از آخرین وضعیت آن تغییر یافت.
-user uname فایل متعلق به user uname (مجوز کاربر عددی مجاز است).
-x نوع c همانند نوع، مگر اینکه فایل یک لینک نمادین باشد. برای لینک های نمادین: if -follow داده نشده است، درست اگر فایل یک پیوند به یک فایل از نوع c است ؛ اگر اگر بعدا داده شود، درست است اگر c باشد l به عبارت دیگر، برای لینک های نمادین
-xtype نوع فایل را بررسی می کند که نوع آن را بررسی نمی کند.

اقدامات

فرمان -exec؛

فرمان را اجرا کنید درست است اگر 0 وضعیت بازگشت تمام استدلال های زیر برای پیدا کردن به عنوان استدلال به دستور گرفته می شود تا یک argument که از `؛ ' مواجه می شود رشته `{} 'با نام فایل فعلی جایگزین شده است که هر جا که در استدلال های فرمان رخ می دهد، نه فقط در استدلال هایی که در آن تنها است، همانند بعضی از نسخه های جستجو، پردازش می شود. هر دو این ساختار ممکن است نیاز به فرار داشته باشند (با یک \\) و یا نقل قول برای محافظت از آنها از گسترش توسط پوسته. دستور در دایرکتوری شروع اجرا می شود.

-fls file

درست است مانند -ls اما به فایل مانند فایل fprint نوشتن.

فایل fprint

درست است نام فایل کامل را به فایل فایل چاپ کنید . اگر فایل در هنگام جستجو وجود نداشته باشد، آن ایجاد می شود؛ اگر آن وجود دارد، آن کوتاه است. نام پرونده `` / dev / stdout '' و `` / dev / stderr '' به طور ویژه مورد استفاده قرار می گیرند؛ آنها به ترتیب به خروجی استاندارد و خروجی خطای استاندارد مراجعه می کنند.

-fprint0 فایل

درست است مانند -print0 اما به فایل مانند -fprint نوشتن.

فرمت فایل fprintf

درست است مانند print، اما به فایل مانند فایل fprint نوشتن.

فرمان -ok

مانند -exec اما از کاربر اول بخواهید (بر روی ورودی استاندارد)؛ اگر پاسخ با y یا y شروع نشود، دستور را اجرا نکنید و بازگشتی نادرست باشد.

-چاپ

درست است نام فایل کامل را بر روی خروجی استاندارد چاپ می کند، به دنبال یک خط جدید است.

چاپگر 0

درست است نام فایل کامل را بر روی خروجی استاندارد چاپ کرده و به دنبال آن یک کاراکتر خالی است. این اجازه می دهد تا نام فایل هایی که حاوی خطوط جدید هستند را به درستی توسط برنامه هایی که خروجی پیدا می کنند پردازش کنند.

فرمت چاپی

درست است فرمت چاپ بر روی خروجی استاندارد، تفسیر دستورات `\ 'فرار و٪٪. عرض و دقت فیلد را می توان با عملکرد printf C مشخص کرد. برخلاف print-print، خط جدیدی در پایان رشته اضافه نمی کند. فرار و دستورالعمل ها عبارتند از:

\ a

زنگ هشدار.

\ b

Backspace

\ c

چاپ را از این فرمت بلافاصله قطع کنید و خروجی را فشرده کنید.

\ f

خوراک فرم

\ n

خط جدید.

\ r

برگشت محموله.

\ t

برگه افقی

\ v

برگه عمودی

\\

یک بکسلر (`\ ').

\ NNN

شخصیتی که کد ASCII NNN (اکتال) است.

شخصیت \ \ \ به دنبال هر کاراکتر دیگر به عنوان یک شخص معمولی رفتار می شود، به طوری که هر دو آنها چاپ می شوند.

٪٪

نشانه درصد واقعی

٪ a

آخرین زمان دسترسی فایل در فرمت باز شده توسط عملکرد C `ctime '.

٪ A k

آخرین دسترسی به فایل در فرمت مشخص شده توسط k ، که یا @ @ یا یک دستور برای عملکرد C `strftime است. مقادیر ممکن برای k در زیر ذکر شده است. بعضی از آنها ممکن است در همه سیستم ها به علت اختلاف در 'strftime' بین سیستم ها در دسترس نباشد.

@

ثانیه از ژانویه 1، 1970، 00:00 GMT.

زمینه های زمانی:

ه

ساعت (00..23)

من

ساعت (01..12)

ک

ساعت (0..23)

ل

ساعت (1..12)

م

دقیقه (00..59)

پ

AM یا PM محلی است

ر

زمان، 12 ساعت (hh: mm: ss [AP] M)

S

دوم (00..61)

T

زمان، 24 ساعت (hh: mm: ss)

ایکس

نمایش زمان محلی (H: M: S)

Z

منطقه زمانی (به عنوان مثال، EDT)، و یا اگر هیچ منطقه زمانی قابل تعیین نیست

زمینه های تاریخ:

a

نام روز هفته مختصات محلی (Sun..Sat)

الف

نام کامل روز هفته locale، طول متغیر (یکشنبه ... صبح)

ب

نام ماه نام محلی (ژانویه و دسامبر)

ب

نام ماه کامل locale، طول متغیر (ژانویه ... دسامبر)

ج

تاریخ و زمان محلی (Sat Nov 04 12:02:33 EST 1989)

د

روز ماه (01..31)

د

تاریخ (mm / dd / yy)

ساعت

همانند ب

ج

روز سال (001..366)

متر

ماه (01..12)

U

شماره هفته سال با یکشنبه به عنوان اولین روز هفته (00..53)

w

روز هفته (0..6)

W

شماره هفته سال با دوشنبه به عنوان اولین روز هفته (00..53)

ایکس

نمایش تاریخ محلی (mm / dd / yy)

ی

دو رقم آخر سال (00..99)

ی

سال (1970 ...)

٪ b

اندازه فایل در 512 بلوک بات (گرد کردن).

٪ c

زمان تغییر آخرین وضعیت فایل در فرمت باز شده توسط عملکرد c `ctime.

٪ C k

زمان تغییر وضعیت آخرین فایل در فرمت مشخص شده توسط k است که مشابه با٪ A است.

٪ d

عمق فایل در درخت دایرکتوری؛ 0 به این معنی است که فایل یک آرگومان خط فرمان است.

٪ f

نام فایل با هر دایرکتوری پیشرو حذف شده (تنها آخرین عنصر).

٪ F

نوع فایل سیستم فایل است؛ این مقدار را می توان برای فستیوال استفاده کرد.

٪ g

نام گروه فایل، یا شناسه گروه عددی اگر گروه نامی ندارد.

٪ G

شناسه گروه عددی فایل

٪ h

دایرکتوری های پیشرو در نام فایل (همه اما عنصر آخر).

٪ H

استدلال خط فرمانی که تحت آن فایل یافت شد

٪من

شماره ورودی پرونده (در دهدهی).

٪ k

اندازه فایل در بلوک های 1K (گرد می شود).

٪ l

شیء لینک نمادین (رشته خالی اگر فایل یک لینک نمادین نیست).

٪ m

بیت های مجوز فایل (در هشتم).

٪ n

تعداد لینک های سخت به فایل.

٪پ

نام فایل

٪پ

نام پرونده با نام آرگومان خط فرمان که تحت آن برداشته شد.

٪ s

اندازه فایل در بایت.

٪ t

زمان آخرین اصلاح فایل در فرمت باز شده توسط عملکرد C `ctime.

٪ T K

زمان آخرین اصلاح فایل در فرمت مشخص شده توسط k ، مشابه٪ A است.

٪ u

نام کاربری فایل، یا شناسه کاربر عددی اگر کاربر هیچ نامی ندارد

٪ U

شناسه کاربر عددی فایل

شخصیت `٪ 'و هر کاراکتر دیگر از بین می رود (اما شخصیت دیگر چاپ می شود).

-پروانه

اگر -depth داده نشده است، درست است؛ دایرکتوری را نزنید.
اگر -depth داده شده است، نادرست؛ بدون اثر

-ls

درست است فایل فعلی را در فرمت `ls -dils 'در خروجی استاندارد لیست کنید. تعداد بلوک از 1K بلوک است، مگر اینکه متغیر محیط POSIXLY_CORRECT تنظیم شده باشد، در این صورت بلوک های 512 بایت استفاده می شود.

اپراتورها

به ترتیب اولویت کاهش می یابد:

( expr )

اولویت نیرو

! expr

درست است که expr اشتباه است

بدون expr

مثل ! expr

expr1 expr2

و (به طور ضمنی)؛ expr2 ارزیابی نشده است اگر expr1 نادرست باشد

expr1 -a expr2

همانند expr1 expr2 .

expr1 و expr2

همانند expr1 expr2 .

expr1 -o expr2

یا؛ expr2 ارزیابی نمی شود اگر expr1 درست باشد

expr1 یا expr2

همانند expr1 -o expr2 .

expr1 ، expr2

فهرست هم expr1 و هم expr2 همیشه ارزیابی می شوند. مقدار expr1 از بین می رود ارزش لیست، مقدار expr2 است .

مثال ها

find / home -user joe

هر فایل زیر فهرست / خانه متعلق به user joe را پیدا کنید.

پیدا کردن / usr -name * stat

پیدا کردن هر فایل زیر پوشه / usr که در ".stat" پایان می یابد.

پیدا کردن / var / spool -time +60

هر فایل زیر پوشه / var / spool را پیدا کنید که بیش از 60 روز قبل اصلاح شد.

find / tmp -name core-type f-print | xargs / bin / rm -f

پیدا کردن فایل ها به نام هسته در زیر پوشه / tmp و حذف آنها. توجه داشته باشید که این کار اشتباه کار خواهد کرد اگر نامهای فایل حاوی خطوط جدید، تک یا دو نقل قول یا فضاها وجود داشته باشد.

find / tmp -name core-type f -print0 | xargs -0 / bin / rm -f

پیدا کردن فایل های به نام هسته در داخل یا در زیر پوشه / tmp و حذف آنها، پردازش نام فایل ها به طوری که فایل یا نام دایرکتوری که حاوی تک یا دو نقل قول، فضاهای و خطوط جدید درست شده است. تست -name قبل از تابع -type برای جلوگیری از نیاز به تماس stat (2) در هر فایل می آید.

پیدا کردن . -type f -exec file '{}' \؛

`فایل 'را بر روی هر فایل در زیر پوشه فعلی اجرا می کند. توجه داشته باشید که braces در علامت نقل قول تک محصور می شوند تا از اصطلاح به عنوان نشانه گذاری اسکریپت پوسته محافظت کنند. با استفاده از یک backslash، با استفاده از semicolon نیز محافظت می شود، هرچند '؛' می توانست در این مورد نیز مورد استفاده قرار گیرد.

find / \ (-perm -4000 -fprintf /root/suid.txt '٪ # m٪ u٪ p \ n' \)، \\ (-size + 100M -fprintf / root / big.txt '٪ -10s٪ p \ n '\)

فقط یک بار فایل سیستم را مرور کنید ، فایلهای setuid و دایرکتوری ها را به /root/suid.txt و فایل های بزرگ به /root/big.txt اضافه کنید .

پیدا کردن $ HOME -time 0

جستجو برای فایل ها در پوشه خانه شما که در بیست و چهار ساعت گذشته تغییر کرده است. این دستور به این ترتیب کار می کند زیرا زمانیکه هر فایل آخرین بار اصلاح شده است به 24 ساعت تقسیم می شود و هر باقی مانده از بین می رود. این بدان معنی است که برای مطابقت با زمان

0 ، یک فایل باید تغییراتی در گذشته داشته باشد که کمتر از 24 ساعت پیش باشد.

پیدا کردن . 664 فام

جستجو برای فایل هایی که خواسته و نوشتن مجوز برای مالک و گروه خود را دارند، اما دیگر کاربران می توانند خواندن، اما نمی نویسند. فایل هایی که این معیارها را برآورده می کنند، اما بیت های مجوز دیگری (برای مثال اگر کسی بتواند فایل را اجرا کند) همسان نخواهد بود.

پیدا کردن . -پرم -664

جستجو برای فایل هایی که خواندن و نوشتن مجوز مالک و گروه خود را دارند و دیگر کاربران می توانند بدون در نظر داشتن وجود هر گونه مجوز اضافی (مثلا بیت اجرایی) را بخوانند. این یک فایل است که دارای حالت 0777 است، به عنوان مثال.

پیدا کردن . -مشکل 222

جستجو برای فایل هایی که توسط شخص (صاحب آن، گروه خود و یا هر کس دیگری) قابل خواندن هستند.

پیدا کردن . -perm / 220 پیدا کنید. -perm / u + w، g + w پیدا کنید. -perm / u = w، g = w

هر سه از این دستورات همان کار را انجام می دهند، اما برای اولین بار از نماد هشتم از حالت فایل استفاده می کنند، و دو نفر دیگر از شکل نمادین استفاده می کنند. این دستورات همه را برای فایل هایی که توسط مالک یا گروه آنها قابل خواندن هستند جستجو می کنند. فایل ها لازم نیست که توسط هر دو مالک و گروه قابل هماهنگ باشند؛ یا انجام خواهد داد

پیدا کردن . -مرغ -220 پیدا کنید -perm -g + w، u + w

هر دو این دستورات همان کار را انجام می دهند؛ جستجو برای فایل هایی که توسط مالک و گروه خود قابل خواندن هستند.

پیدا کردن . -مرغ -444 -پروم / 222! -perm / 111 پیدا کنید -perm -a + r -perm / a + w! -perm / a + x

این دو دستور هر دو فایل هایی را که قابل خواندن برای همه هستند جستجو می کنند (-perm -444 یا -perm -a + r)، حداقل در مجموعه ای از نوشتن (-perm / 222 یا -perm / a + w)، اما اجرایی نیستند برای هر کسی (! -perm / 111 و! -perm / a + x به ترتیب)

مهم: از دستور man ( ٪ man ) برای دیدن نحوه استفاده از دستور در رایانه خاص خود استفاده کنید.