آیا تا به حال از جستجوی دستی فایل ها در رایانه خود احساس ناامیدی کرده اید؟ اگر یک برنامه‌نویس یا مهندس DevOps هستید که روی سرورهای لینوکس بدون رابط کاربری گرافیکی کار می‌کنید، پیدا کردن فایل‌ها به این طرف و آن طرف سخت خواهد بود.

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

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

چیست find فرمان در لینوکس؟

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

بیایید قدرت آن را بررسی کنیم find فرمان

چگونه یک فایل را بر اساس نام جستجو کنیم

فرض کنید فایلی به نام ذخیره کرده اید hello_world.html جایی و شما حتی نام دایرکتوری را به خاطر نمی آورید. اما رئیس شما از شما می خواهد که فوراً پرونده را برای آنها ارسال کنید.

معمولاً، اگر فراموش کرده‌اید که یک فایل را در کجا ذخیره کرده‌اید، ابتدا پوشه‌ها را مرور می‌کنید و بررسی می‌کنید که آیا فایل وجود دارد یا خیر.

این زمانی است که find دستور کار عالی انجام می دهد. به جای جستجوی دستی فایل در رایانه، می توانید از آن استفاده کنید find فرمان برای خودکار کردن فرآیند

با عبور نام فایل با استفاده از -name پرچم، find دستور جستجو می کند و مکان فایل را برمی گرداند.

find -name <file_name>
find دستور دستور برای جستجوی یک فایل بر اساس نام
hUG1ogKlPilvUZZiCIOBO4x1ZTlGAujhGTe2v-KevAi3zU3z-ZuBA0VJvMWht0V-7cLha4beNzMIkENiN0ZiYZfa8Pc0O-XJMzmbfftY_bo9PTGF2FG5GB9F4FG5Gb94B4FKF2F15Gb90000000-XJMzmbfftY_bo9PTG5Gsr rxL9MrSOCVI
دستور ترمینال برای جستجوی یک فایل با نام

اما به یاد داشته باشید -name flag جستجوی حساس به حروف بزرگ را انجام می دهد. اگر به دنبال انجام یک جستجوی غیر حساس به حروف بزرگ و کوچک هستید، می توانید از آن استفاده کنید -iname به جای پرچم

find -iname <file_name>
find دستور دستور برای انجام جستجوی بدون حروف بزرگ
Gxuso3qZslePPLMxKDtBuQWwQiliDpU2pHAzRTdiRob2OBKrdN1oWA_rTwe2thYiHeUmRo8SBNE2QR6G2kmdDlKhX14wFd9fYmfppZVQNprUHaGMWKrdN1oWA_rTwe2thYiHeUmRo8SBNE2QR6G2kmdDlKhX14wFd9fYmfppZVQNprUHaGMWQVSPhStH2HaGMWLBqTh2 M7T3Y
دستور ترمینال برای انجام جستجوی حساس به حروف کوچک و بزرگ

شما همچنین می توانید استفاده کنید find فرمان به عنوان جایگزینی برای ls در بعضی جاها فرمان دهید بیایید فرض کنیم باید تمام فایل‌هایی را که با آن ختم می‌شوند را پیدا کنید .txt افزونه. شما می توانید این کار را با find دستور با استفاده از الگوی regex (*.txt).

find /path/to/search -name "*.txt"
find فرمان برای جستجوی فایل های مطابق با یک الگو
xtbCKd-v83ytN4mnr35RbiWCgJuEiAt9LBO_Qq2IDwRPJaQWRfzBUe5YY63JEcLHS344TvGWRzK139n93upgh1ALKgRavsWwNe0iTh772ChzpGiTh772ChzpGiTh77FChzpGiTh77FChzpGiTh77FChzpGiTh772RhG5000iTh772XzpGiTh772xpGiTh772xpGiTh77FXzpGiTh77FXzpGiTh77FXzpGiTh77FXzpGi5Xw50000000000HzPhPi5XRhGi5 0fSIyJJcMmw
فرمان ترمینال که جستجوی فایل را با تطبیق یک الگو نشان می دهد

این دستور همه موارد را فهرست می کند .txt فایل های موجود در دایرکتوری فعلی شما و زیرشاخه های آن.

برای پیدا کردن .txt فایل های موجود در یک دایرکتوری و زیر شاخه خاص، می توانید آن را جایگزین کنید /path/to/search با مسیر دایرکتوری شما

نحوه یافتن دایرکتوری در لینوکس

جستجوی دایرکتوری با عبور از مسیر امکان پذیر است d به -type پارامتر در find فرمان

find /path/to/search -type d
find دستور دستور برای یافتن دایرکتوری
qmKtQotgBftOfU_pII8GV8gsYJqynmXvaqQIU0VrBOwdcWGwH95R-CQX4rxR3e_xQYyRm5D3bt6f7t0U9DwBHBthlzFnmbtTyvG4MWzVMSv4G4MWzMWMSsOt A7yOwY8Hcn0Q
دستور ترمینال برای جستجوی دایرکتوری با استفاده از find فرمان

در تصویر بالا، یک دایرکتوری با نام پیدا می کنیم zip از دایرکتوری فعلی ما

پیشنهاد می‌کنیم بخوانید:  چرا بیت کوین ها ارزش دارند؟

به طور مشابه -type گزینه گزینه های پارامتر دیگر را می پذیرد تا فرآیند یافتن ما را ساده کند.

  • f لیست فایل های معمولی را پیدا می کند
  • b لیست دستگاه های بلوک را پیدا می کند
  • c لیست دستگاه های کاراکتر را پیدا می کند
  • l لیست پیوندهای نمادین را پیدا می کند
  • s لیست سوکت ها را پیدا می کند
  • p لوله های نامگذاری شده را پیدا می کند

چگونه یک فایل را بر اساس اندازه در لینوکس جستجو کنیم

اضافه کردن -size گزینه همراه با find دستور به شما کمک می کند فایل ها را بر اساس اندازه پیدا کنید. Prepend a + یا - به اندازه ای که به ترتیب نشان دهنده بزرگتر و کمتر از.

find /path/to/search -size <size_of_the_file>
find دستور دستور برای جستجوی فایل ها بر اساس اندازه
5_gYC6AREIU77iDWAOY3uqfyCEPpICXenMzpxMv15oaOyNg2t4QhtH862wZeIRH3IgWxX1MJYwAOMGQZVeerY6HeNYjcmB_bdMiqPnoAsQCOs5McDQ1AsQMQ1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1 C0Q-1CznPNRn8
دستور ترمینال برای جستجوی فایل ها بر اساس اندازه

در اسکرین شات بالا، ما همه فایل هایی را پیدا می کنیم که حجم آنها بیشتر از 1 گیگابایت است.

همچنین می توانید تمام فایل هایی را که در محدوده اندازه خاصی قرار دارند جستجو کنید.

به عنوان مثال، اگر می‌خواهید تمام فایل‌هایی که حجم بالای 50 مگابایت و زیر 100 مگابایت دارند را پیدا کنید، می‌توانید دستور زیر را اجرا کنید:

find /path/to/search -size +50M -size -100M
find دستور دستور برای جستجوی فایل ها در محدوده اندازه
این F6o40
فرمان ترمینال برای جستجوی فایل ها در یک محدوده

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

  1. K نشان دهنده KB است
  2. M نشان دهنده MB است
  3. G نشان دهنده GB است
  4. b نشان دهنده بایت است
  5. c نشان دهنده بلوک ها است

چگونه یک فایل را بر اساس زمان اصلاح شده جستجو کنیم

هر فایل دارای یک زمان ایجاد و آخرین به روز رسانی مرتبط با آن است. بیایید فرض کنیم هزاران فایل در دایرکتوری خود دارید. شما یک فایل را در چند روز گذشته ویرایش کردید و نام آن را فراموش کردید. مطمئن هستید که بعد از آن فقط چند فایل را ویرایش کرده اید.

در چنین مواردی، می توانید تمام فایل هایی را که در 7 روز گذشته اصلاح شده اند، پیدا کنید. این امر جستجوی شما را از بیش از 1000 فایل به مقدار قابل کنترل تری محدود می کند. پس از اجرای دستور، می‌توانید فایلی را که ویرایش کرده‌اید، در چند ثانیه پیدا کنید.

این امر با عبور امکان پذیر است -mtime پارامتر با find فرمان

find /path/to/search -mtime <-number_of_days_ago>
find دستور دستور برای جستجوی فایل های اصلاح شده در چند روز خاص
EOsirsBvBa83A2NeK1qGZ8g_FLriAngr4yso3nhOpuwT18zrkur92GKfMBfr8nA8ULrgdWvREvzJfSznVecNXZXONs3JXdG3gJFoqZ7PcqFmZeka3vREVZXON zx_1Y
دستور ترمینال برای جستجوی فایل بر اساس زمان اصلاح شده

بیایید سناریوی دیگری را فرض کنیم، که در آن تاریخ امروز 10 فوریه 1402 است. شما یک فایل را قبل از 3 فوریه 1402 تغییر داده اید. پس از 3 فوریه 1402، بسیاری از فایل ها را تغییر داده اید. شما باید فایلی را که قبل از 3 فوریه 1402 تغییر داده اید پیدا کنید. بنابراین، اساساً به فایل هایی نیاز دارید که قبل از 3 فوریه 1402 اصلاح شده اند.

سناریوی عجیب، درست است؟

اما، شما همچنین می توانید این پرس و جو را با استفاده از find فرمان شما می توانید با تعویض علامت منفی (-) با علامت مثبت (+) به این امر دست یابید.

در اینجا دستور اصلاح شده برای شما آمده است:

find /path/to/search -mtime +7
find دستور دستور برای جستجوی فایل های اصلاح شده قبل از روزهای خاصی

نحوه اجرای یک فرمان روی فایل های فیلتر شده از find فرمان

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

فرض کنید 1000 فایل در یک دایرکتوری دارید و آن را اجرا می کنید find دستور 20 فایل مطابق را برمی گرداند. شما می خواهید این 20 فایل را به دایرکتوری دیگری منتقل کنید. چگونه می توانید به آن دست پیدا کنید؟

پیشنهاد می‌کنیم بخوانید:  روش استخراج (از حالت فشرده) کردن فایل Tar Gz

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

شما می توانید این کار را با عبور از -exec گزینه با find فرمان

را -exec گزینه بر روی هر فایلی که در جستجو یافت می شود دستوری را اجرا می کند. را -exec پس از گزینه، یک فرمان و آرگومان های آن، با {} نمادهایی که نشان دهنده مسیر فایل در حال پردازش هستند.

برای نشان دادن پایان -exec دستور، باید اضافه کنیم \; (یک اسلش معکوس و یک نیم دو نقطه).

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

find /path/to/search -name  -exec  {}  \;
find دستور دستور برای اجرای عملیات روی فایل های فیلتر شده

بیایید سعی کنیم فایل های فیلتر شده را از قسمت منتقل کنیم 5minslearn دایرکتوری به zip فهرست راهنما.

این دستور این است:

find ./5minslearn -name "*.zip" -exec mv {} ./5minslearn/zip \;
Oysc8VJqcheOL0uSk9t18SM1BBckLmZ1Sfs026TByvdQcHNFVDGssztFu13rHi0waaOUXCuKx1rsHbyWCXr190agnVEKZA3rMexuSH_m6myz38JOMKVCd5TByvdQcHNFVDGssztFu13rHi0waaOUXCuKx1rsHbyWCXr190agnVEKZA3rMexuSH_m6myz38JHLKVCd0 KG0yiZI

این دستور تمام فایل هایی که با a ختم می شوند را جستجو می کند .zip در ./5minslearn دایرکتوری و سپس هر فایل را به ./5minslearn/zip فهرست راهنما.

را -exec این گزینه به شما امکان می دهد تا طیف گسترده ای از عملیات را بر روی فایل های یافت شده انجام دهید. می توانید با کپی کردن، حذف یا حتی تغییر دستور مجوز فایل، دستور move از مثال بالا را جایگزین کنید.

نحوه اجرای یک فرمان روی فایل های فیلتر شده با تایید

اگر مطمئن نباشند که آیا این عملیات را روی هر فایل اعمال کنند، اکثر مردم ترجیح می دهند از این استفاده کنند.

را -ok گزینه مشابه است -exec گزینه ای به جز اینکه قبل از اجرای عملیات روی هر فایل، درخواست تایید می کند. این دستور برای بررسی فایل هایی که قبل از اجرای عملیات خاص تحت تأثیر قرار می گیرند بسیار مفید است. همچنین اگر مطمئن نیستید یا نمی‌خواهید دستور را اعمال کنید، می‌توانید آن را رد کنید.

به عنوان مثال، این بار بیایید سعی کنیم آن را جابجا کنیم .txt فایل ها به دایرکتوری دیگر

find /path/to/search -name "*.txt" -ok mv {} /path/to/destination \;
find دستور دستور برای تایید قبل از اجرای عملیات بر روی فایل های فیلتر شده
LR9SFYz9f90xR6_aMS_VKEQa7IS9cecwEAMRkNh5KJ1JSMaQCx0cIe-5XOonpOOdELbnU8549XkQ-HfYCQEoG9Epn8F89cA86o3BRFTR9MWSW000W000XT8BFTR9MW000W000X -JHZTSGFBrq0
دستور ترمینال برای انتقال فایل های فیلتر شده با تایید

دستور بالا تمام فایل های دارای a را جستجو می کند .txt پسوند در ./5minslearn دایرکتوری و سپس از کاربر می خواهد که قبل از انتقال هر فایل به آن را تایید کند ./5minslearn/text_files فهرست راهنما.

برای تایید عملیات، وارد کنید yes و no برای رد کردن عملیات و پرش به فایل بعدی.

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

چگونه یک فایل با اطلاعات دقیق پیدا کنیم

را -ls گزینه موجود در دستور find برای نمایش اطلاعات فایل های یافت شده در جستجو در قالب دستور ls استفاده می شود. این گزینه اطلاعات دقیقی در مورد فایل ها، مانند مجوزها، مالک، اندازه و آخرین زمان تغییر آنها ارائه می دهد.

find /path/to/search -name "*.<file-extension>" -ls
find دستور دستور برای فهرست کردن فایل ها در ls فرمت فرمان
ryvzpx-yykuouhg_ld7rmnkk-ptgodtmivwl482r6xvitz40y3djldmdchwev6eg1kpvfe4nvt3lhgdnzjvrd2xs51sys4nov584bxhujujujujccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccs 68spk
دستور ترمینال برای فهرست کردن فایل ها در ls فرمت فرمان

نحوه یافتن و حذف فایل ها

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

find . -name "*.<extension>" -delete
W2DQEoEcNi0897Z99NPHyhx6RTPpO1hL0AVCAGCuKdabq8_eXbFtsL2BJdLn6MCqdYXTa7veSRhDj9gTU7Rbbz0vNoIbxF_N_IXmR45IHKdabqRP20001HKgHRP20001HKgHRPG3F P6kcinXqY

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

توجه: این عملیات غیر قابل برگشت است. هنگام اجرای عملیات حذف، 100% مطمئن باشید.

من توصیه می کنم اجرا کنید find فرمان بدون -delete ابتدا پرچم گذاری کنید و مطمئن شوید که فقط فایل هایی که باید حذف شوند نشان داده می شوند. هنگامی که مطمئن شدید، می توانید همان دستور را به صورت پیوست اجرا کنید -delete پرچم.

نتیجه

در این مقاله، نحوه جستجوی موثر فایل ها با استفاده از ترمینال لینوکس را یاد گرفتید.

اینها گزینه های بسیار ابتدایی در دستور find هستند که فکر می کنم هر توسعه دهنده ای باید بداند. من معتقدم تسلط بر اصول اولیه اولین قدم برای پیشرفته تر شدن با لینوکس است. من اصول اولیه را در تمام وبلاگ هایم پوشش داده ام تا به شما در ایجاد یک پایه محکم کمک کنم.

برای کسب اطلاعات بیشتر در مورد لینوکس، در خبرنامه ایمیل من در سایت من مشترک شوید و من را در رسانه های اجتماعی دنبال کنید.