لینوکس

جست‌وجوی فایل در لینوکس با find؛ نام، نوع و اندازه

فایل‌ها را با find بر اساس نام، نوع و اندازهٔ بایتی پیدا کنید؛ کوتیشن الگوها، خطاهای دسترسی و مرز جست‌وجوی امن را یاد بگیرید.

رایکت رایکت بروزرسانی ۴ دقیقه مطالعه ۰ دیدگاه
جست‌وجوی فایل در لینوکس با find؛ نام، نوع و اندازه

با 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 را مرور کنید.

۷. مسیر مطالعهٔ مرتبط

۸. منابع و روش بررسی

منابع رسمی در ۲۴ اکتبر ۲۰۲۶ بررسی شدند. نمونه‌های فرمان با دادهٔ آموزشی در GNU/MSYS روی ویندوز بررسی شده‌اند؛ این محیط، سرور لینوکس بومی نیست. رفتار مالکیت و دسترسی فایل‌سیستم باید روی سیستم مقصد جدا بررسی شود.

این مطلب برایتان مفید بود؟
رایکت
نوشته شده توسط رایکت

تیم محتوای رایکت؛ آموزش‌ها و راهنماهای کاربردی هاست، دامنه و مدیریت سایت.

مطالب مرتبط

دیدگاه‌ها

نظر یا سوال خود را درباره این مطلب با ما در میان بگذارید

دیدگاه خود را بنویسید

aapanel
cloudlinux
cpanel
directadmin
jetbackup
laravel
mysql
virtualizor
vmware
wordpress