با find میتوانید فایل را از روی نام، نوع و اندازه در یک شاخه پیدا کنید. برای تشخیص، کافی است مسیرها چاپ شوند؛ به فرمان جستوجو -delete یا اجرای حذف اضافه نکنید. این راهنما جستوجوی خواندنی را توضیح میدهد تا ابتدا نتیجه را ببینید و بعد دربارهٔ کار بعدی تصمیم بگیرید.
۱. محدودهٔ جستوجو را کوچک کنید
find ./logs -type f -name '*.log' -print
ابتدا ./logs نقطهٔ شروع است؛ جستوجو زیرپوشهها را هم بررسی میکند. -type f فایل معمولی را انتخاب میکند و -name فقط نامِ آخر مسیر را با الگوی دادهشده میسنجد. کوتیشن دور *.log لازم است تا شِل قبل از find آن را به فهرست فایلهای پوشهٔ فعلی تبدیل نکند.
- نقطهٔ شروع را پوشهٔ مجاز خودتان بگذارید.
- برای پیدا کردن فایل سایت، از جستوجوی کل / شروع نکنید.
- خطاهای Permission denied را بخوانید؛ پنهانکردن stderr به معنی کاملبودن جستوجو نیست.
۲. نام، مسیر و نوع را از هم جدا کنید
| نیاز | بخش مناسب فرمان |
|---|---|
| فایلهای با نام مشخص | -name با الگوی کوتیشندار |
نام بدون حساسیت به بزرگی حروف در GNU |
-iname |
| فقط پوشهها | -type d |
| شرط روی کل مسیر | -path |
find نام فایل را پیدا میکند؛ برای پیدا کردن عبارت داخل فایل ابزار دیگری مانند grep لازم است. -name و -path هم یکسان نیستند: وقتی مسیرهای مشابه دارید، شرط روی نامِ آخر ممکن است نتیجههای بیشتری از انتظار بدهد.
۳. اندازهٔ دقیق در برابر واحد گردشده
find . -type f -name '*.log' -size +1024c -print
در این مثال GNU find، پسوند c یعنی بایت و +1024c یعنی بزرگتر از ۱۰۲۴ بایت. در fixture آموزشی ما فقط ./large.log با ۲۰۵۱ بایت انتخاب شد و small.log بیرون ماند. نبودن پسوند c یا استفاده از k و M معنای مقایسه را تغییر میدهد؛ واحد را حذف نکنید.
برای واحدهای بلوکی، اندازه پیش از مقایسه میتواند رو به بالا گرد شود. بنابراین عبارتهایی مانند -size -1M را «همهٔ فایلهای زیر یک مگابایت» ترجمه نکنید؛ ممکن است فایل غیرخالی کوچک هم انتخاب نشود. اگر مرز بایتی میخواهید، با واحد c و مرز روشن بنویسید.
۴. چرا نتیجه خالی یا ناقص است؟
| نشانه | بررسی |
|---|---|
| هیچ نتیجهای نیست | پوشهٔ فعلی، نقطهٔ شروع و الگوی نام را کنترل کنید |
| فایل در پوشهٔ دیگر پیدا شد | جستوجو بازگشتی است؛ محدوده را دقیقتر کنید |
Permission denied |
بخشی از شاخه خوانده نشده؛ نتیجه کامل فرض نشود |
| نتیجه روی ویندوز با سرور فرق دارد | حروف، مجوز و فایلسیستم مقصد را جدا بررسی کنید |
نکته: find بهطور پیشفرض مسیر لینک نمادین را مثل یک شاخهٔ معمولی دنبال نمیکند. افزودن -L رفتار را تغییر میدهد و میتواند جستوجو را بسیار بزرگتر کند؛ برای حل یک نتیجهٔ غایب، آن را بیبررسی اضافه نکنید.
۵. خروجی را به فرمان خطرناک وصل نکنید
برای مرور دستی، -print کافی است. نام فایل میتواند فاصله یا حتی newline داشته باشد؛ خواندن خروجی با جداسازی بر اساس فاصله، راه مطمئنی برای اجرای عملیات بعدی روی همهٔ نامها نیست. در اسکریپت حرفهای از قراردادهایی مانند -print0 و ابزار سازگار با NUL استفاده میشود.
در این آموزش هیچ عملیات حذف، تغییر مالکیت یا ویرایش خودکار پیشنهاد نمیشود. اگر قصد پاکسازی دارید، ابتدا فهرست، مسیر، مالک، ضرورت نگهداری و امکان بازیابی را جدا بررسی کنید. پیدا شدن نام backup هم اجازهٔ حذف آن نیست.
۶. پایان تشخیص
نتیجهٔ مفید، یک فهرست محدود و قابلتوضیح از مسیرهاست. اگر فایل پیدا شد، نوع و نام آن را پیش از بازکردن بررسی کنید؛ اگر نبود، دلیل ناقصبودن جستوجو را هم ثبت کنید. برای مرور دستی همین پوشهها در سیپنل، File Manager مسیر جایگزینِ بدون SSH است.
نقطهٔ شروع find به پوشهٔ فعلی یا مسیر انتخابشده وابسته است؛ اگر مسیر برایتان مبهم است، ابتدا آموزش مسیرهای لینوکس و فرمانهای pwd و cd را مرور کنید.
۷. مسیر مطالعهٔ مرتبط
- آموزش اتصال به سرور با SSH در ویندوز، لینوکس و مک
- File Manager سیپنل از صفر؛ آپلود، ویرایش، فشردهسازی و سطل زباله
۸. منابع و روش بررسی
منابع رسمی در ۲۴ اکتبر ۲۰۲۶ بررسی شدند. نمونههای فرمان با دادهٔ آموزشی در GNU/MSYS روی ویندوز بررسی شدهاند؛ این محیط، سرور لینوکس بومی نیست. رفتار مالکیت و دسترسی فایلسیستم باید روی سیستم مقصد جدا بررسی شود.