از طریق منوی جستجو مطلب مورد نظر خود در وبلاگ را به سرعت پیدا کنید
نحوه جستجوی موثر فایل ها در ترمینال لینوکس
سرفصلهای مطلب
آیا تا به حال از جستجوی دستی فایل ها در رایانه خود احساس ناامیدی کرده اید؟ اگر یک برنامهنویس یا مهندس DevOps هستید که روی سرورهای لینوکس بدون رابط کاربری گرافیکی کار میکنید، پیدا کردن فایلها به این طرف و آن طرف سخت خواهد بود.
بسیاری از مردم از قدرت پایانه های لینوکس بی اطلاع هستند. لینوکس دارای یک خط فرمان فوق العاده قدرتمند است که به شما امکان می دهد فایل ها و دایرکتوری ها را در کسری از ثانیه جستجو کنید.
چه مبتدی و چه متخصص، و اگر به دنبال ارتقای مهارت های مدیریت فایل خود به سطح بعدی هستید، به نقطه درستی رسیده اید. این مقاله به شما کمک می کند تا اصول رایج ترین آنها را درک کنید پیدا کردن دستور در لینوکس
چیست find فرمان در لینوکس؟
را find دستور به شما امکان می دهد فایل ها و دایرکتوری ها را در رایانه خود جستجو کنید. این انعطاف پذیری را برای جستجوی فایل ها در یک دایرکتوری خاص یا به صورت بازگشتی از طریق همه زیرشاخه ها اضافه می کند.
بیایید قدرت آن را بررسی کنیم find فرمان
چگونه یک فایل را بر اساس نام جستجو کنیم
فرض کنید فایلی به نام ذخیره کرده اید hello_world.html جایی و شما حتی نام دایرکتوری را به خاطر نمی آورید. اما رئیس شما از شما می خواهد که فوراً پرونده را برای آنها ارسال کنید.
معمولاً، اگر فراموش کردهاید که یک فایل را در کجا ذخیره کردهاید، ابتدا پوشهها را مرور میکنید و بررسی میکنید که آیا فایل وجود دارد یا خیر.
این زمانی است که find دستور کار عالی انجام می دهد. به جای جستجوی دستی فایل در رایانه، می توانید از آن استفاده کنید find فرمان برای خودکار کردن فرآیند
با عبور نام فایل با استفاده از -name پرچم، find دستور جستجو می کند و مکان فایل را برمی گرداند.
find -name <file_name>find دستور دستور برای جستجوی یک فایل بر اساس نام
اما به یاد داشته باشید -name flag جستجوی حساس به حروف بزرگ را انجام می دهد. اگر به دنبال انجام یک جستجوی غیر حساس به حروف بزرگ و کوچک هستید، می توانید از آن استفاده کنید -iname به جای پرچم
find -iname <file_name>find دستور دستور برای انجام جستجوی بدون حروف بزرگ
شما همچنین می توانید استفاده کنید find فرمان به عنوان جایگزینی برای ls در بعضی جاها فرمان دهید بیایید فرض کنیم باید تمام فایلهایی را که با آن ختم میشوند را پیدا کنید .txt افزونه. شما می توانید این کار را با find دستور با استفاده از الگوی regex (*.txt).
find /path/to/search -name "*.txt"find فرمان برای جستجوی فایل های مطابق با یک الگو
این دستور همه موارد را فهرست می کند .txt فایل های موجود در دایرکتوری فعلی شما و زیرشاخه های آن.
برای پیدا کردن .txt فایل های موجود در یک دایرکتوری و زیر شاخه خاص، می توانید آن را جایگزین کنید /path/to/search با مسیر دایرکتوری شما
نحوه یافتن دایرکتوری در لینوکس
جستجوی دایرکتوری با عبور از مسیر امکان پذیر است d به -type پارامتر در find فرمان
find /path/to/search -type dfind دستور دستور برای یافتن دایرکتوری
find فرماندر تصویر بالا، یک دایرکتوری با نام پیدا می کنیم zip از دایرکتوری فعلی ما
به طور مشابه -type گزینه گزینه های پارامتر دیگر را می پذیرد تا فرآیند یافتن ما را ساده کند.
fلیست فایل های معمولی را پیدا می کندbلیست دستگاه های بلوک را پیدا می کندcلیست دستگاه های کاراکتر را پیدا می کندlلیست پیوندهای نمادین را پیدا می کندsلیست سوکت ها را پیدا می کندpلوله های نامگذاری شده را پیدا می کند
چگونه یک فایل را بر اساس اندازه در لینوکس جستجو کنیم
اضافه کردن -size گزینه همراه با find دستور به شما کمک می کند فایل ها را بر اساس اندازه پیدا کنید. Prepend a + یا - به اندازه ای که به ترتیب نشان دهنده بزرگتر و کمتر از.
find /path/to/search -size <size_of_the_file>find دستور دستور برای جستجوی فایل ها بر اساس اندازه
در اسکرین شات بالا، ما همه فایل هایی را پیدا می کنیم که حجم آنها بیشتر از 1 گیگابایت است.
همچنین می توانید تمام فایل هایی را که در محدوده اندازه خاصی قرار دارند جستجو کنید.
به عنوان مثال، اگر میخواهید تمام فایلهایی که حجم بالای 50 مگابایت و زیر 100 مگابایت دارند را پیدا کنید، میتوانید دستور زیر را اجرا کنید:
find /path/to/search -size +50M -size -100Mfind دستور دستور برای جستجوی فایل ها در محدوده اندازه
می توانید اندازه را در نماد دلخواه خود مشخص کنید. تعدادی از نمادهای موجود عبارتند از:
- K نشان دهنده KB است
- M نشان دهنده MB است
- G نشان دهنده GB است
- b نشان دهنده بایت است
- c نشان دهنده بلوک ها است
چگونه یک فایل را بر اساس زمان اصلاح شده جستجو کنیم
هر فایل دارای یک زمان ایجاد و آخرین به روز رسانی مرتبط با آن است. بیایید فرض کنیم هزاران فایل در دایرکتوری خود دارید. شما یک فایل را در چند روز گذشته ویرایش کردید و نام آن را فراموش کردید. مطمئن هستید که بعد از آن فقط چند فایل را ویرایش کرده اید.
در چنین مواردی، می توانید تمام فایل هایی را که در 7 روز گذشته اصلاح شده اند، پیدا کنید. این امر جستجوی شما را از بیش از 1000 فایل به مقدار قابل کنترل تری محدود می کند. پس از اجرای دستور، میتوانید فایلی را که ویرایش کردهاید، در چند ثانیه پیدا کنید.
این امر با عبور امکان پذیر است -mtime پارامتر با find فرمان
find /path/to/search -mtime <-number_of_days_ago>find دستور دستور برای جستجوی فایل های اصلاح شده در چند روز خاص
بیایید سناریوی دیگری را فرض کنیم، که در آن تاریخ امروز 10 فوریه 1402 است. شما یک فایل را قبل از 3 فوریه 1402 تغییر داده اید. پس از 3 فوریه 1402، بسیاری از فایل ها را تغییر داده اید. شما باید فایلی را که قبل از 3 فوریه 1402 تغییر داده اید پیدا کنید. بنابراین، اساساً به فایل هایی نیاز دارید که قبل از 3 فوریه 1402 اصلاح شده اند.
سناریوی عجیب، درست است؟
اما، شما همچنین می توانید این پرس و جو را با استفاده از find فرمان شما می توانید با تعویض علامت منفی (-) با علامت مثبت (+) به این امر دست یابید.
در اینجا دستور اصلاح شده برای شما آمده است:
find /path/to/search -mtime +7find دستور دستور برای جستجوی فایل های اصلاح شده قبل از روزهای خاصینحوه اجرای یک فرمان روی فایل های فیلتر شده از find فرمان
این سوال ممکن است شما را گیج کند. قبل از فاش کردن پاسخ، اجازه دهید سوال را به وضوح با یک سناریوی واقعی درک کنیم.
فرض کنید 1000 فایل در یک دایرکتوری دارید و آن را اجرا می کنید find دستور 20 فایل مطابق را برمی گرداند. شما می خواهید این 20 فایل را به دایرکتوری دیگری منتقل کنید. چگونه می توانید به آن دست پیدا کنید؟
به زبان ساده، باید روی هر یک از فایل های فیلتر شده یک دستور اجرا کنیم.
شما می توانید این کار را با عبور از -exec گزینه با find فرمان
را -exec گزینه بر روی هر فایلی که در جستجو یافت می شود دستوری را اجرا می کند. را -exec پس از گزینه، یک فرمان و آرگومان های آن، با {} نمادهایی که نشان دهنده مسیر فایل در حال پردازش هستند.
برای نشان دادن پایان -exec دستور، باید اضافه کنیم \; (یک اسلش معکوس و یک نیم دو نقطه).
در اینجا نحو است:
find /path/to/search -name -exec {} \;find دستور دستور برای اجرای عملیات روی فایل های فیلتر شدهبیایید سعی کنیم فایل های فیلتر شده را از قسمت منتقل کنیم 5minslearn دایرکتوری به zip فهرست راهنما.
این دستور این است:
find ./5minslearn -name "*.zip" -exec mv {} ./5minslearn/zip \;

این دستور تمام فایل هایی که با a ختم می شوند را جستجو می کند .zip در ./5minslearn دایرکتوری و سپس هر فایل را به ./5minslearn/zip فهرست راهنما.
را -exec این گزینه به شما امکان می دهد تا طیف گسترده ای از عملیات را بر روی فایل های یافت شده انجام دهید. می توانید با کپی کردن، حذف یا حتی تغییر دستور مجوز فایل، دستور move از مثال بالا را جایگزین کنید.
نحوه اجرای یک فرمان روی فایل های فیلتر شده با تایید
اگر مطمئن نباشند که آیا این عملیات را روی هر فایل اعمال کنند، اکثر مردم ترجیح می دهند از این استفاده کنند.
را -ok گزینه مشابه است -exec گزینه ای به جز اینکه قبل از اجرای عملیات روی هر فایل، درخواست تایید می کند. این دستور برای بررسی فایل هایی که قبل از اجرای عملیات خاص تحت تأثیر قرار می گیرند بسیار مفید است. همچنین اگر مطمئن نیستید یا نمیخواهید دستور را اعمال کنید، میتوانید آن را رد کنید.
به عنوان مثال، این بار بیایید سعی کنیم آن را جابجا کنیم .txt فایل ها به دایرکتوری دیگر
find /path/to/search -name "*.txt" -ok mv {} /path/to/destination \;find دستور دستور برای تایید قبل از اجرای عملیات بر روی فایل های فیلتر شده
دستور بالا تمام فایل های دارای a را جستجو می کند .txt پسوند در ./5minslearn دایرکتوری و سپس از کاربر می خواهد که قبل از انتقال هر فایل به آن را تایید کند ./5minslearn/text_files فهرست راهنما.
برای تایید عملیات، وارد کنید yes و no برای رد کردن عملیات و پرش به فایل بعدی.
را -ok این گزینه زمانی مفید است که میخواهید در مورد فایلهایی که در حال اصلاح هستید محتاط باشید، زیرا به شما امکان میدهد قبل از اجرای دستور مشخص شده، هر فایل و مکان آن را بررسی کنید.
چگونه یک فایل با اطلاعات دقیق پیدا کنیم
را -ls گزینه موجود در دستور find برای نمایش اطلاعات فایل های یافت شده در جستجو در قالب دستور ls استفاده می شود. این گزینه اطلاعات دقیقی در مورد فایل ها، مانند مجوزها، مالک، اندازه و آخرین زمان تغییر آنها ارائه می دهد.
find /path/to/search -name "*.<file-extension>" -lsfind دستور دستور برای فهرست کردن فایل ها در ls فرمت فرمان
ls فرمت فرماننحوه یافتن و حذف فایل ها
آیا تا به حال نیاز به پیدا کردن فایل ها و حذف آنها از رایانه داشته اید؟ را -delete گزینه در دستور find این کار را برای شما انجام می دهد. این به شما امکان می دهد فایل هایی را که با معیارهای مشخص شده مطابقت دارند حذف کنید.
find . -name "*.<extension>" -delete

در مثال بالا می بینید که دستور find فایل ها را با .html افزونه
توجه: این عملیات غیر قابل برگشت است. هنگام اجرای عملیات حذف، 100% مطمئن باشید.
من توصیه می کنم اجرا کنید find فرمان بدون -delete ابتدا پرچم گذاری کنید و مطمئن شوید که فقط فایل هایی که باید حذف شوند نشان داده می شوند. هنگامی که مطمئن شدید، می توانید همان دستور را به صورت پیوست اجرا کنید -delete پرچم.
نتیجه
در این مقاله، نحوه جستجوی موثر فایل ها با استفاده از ترمینال لینوکس را یاد گرفتید.
اینها گزینه های بسیار ابتدایی در دستور find هستند که فکر می کنم هر توسعه دهنده ای باید بداند. من معتقدم تسلط بر اصول اولیه اولین قدم برای پیشرفته تر شدن با لینوکس است. من اصول اولیه را در تمام وبلاگ هایم پوشش داده ام تا به شما در ایجاد یک پایه محکم کمک کنم.
برای کسب اطلاعات بیشتر در مورد لینوکس، در خبرنامه ایمیل من در سایت من مشترک شوید و من را در رسانه های اجتماعی دنبال کنید.
منتشر شده در 1402-12-27 03:12:07

