وبلاگ رسانگار
با ما حرفه ای باشید

سرور مجازی NVMe

روش حذف (حذف) دایرکتوری در لینوکس

0 4
زمان لازم برای مطالعه: 5 دقیقه



لینوکس چندین روش مختلف برای حذف دایرکتوری ها ارائه می دهد. اگر از یک مدیر فایل دسکتاپ مانند Gnome’s Files یا KDE’s Dolphin استفاده می کنید، می توانید به سرعت فایل ها و دایرکتوری ها را با استفاده از رابط کاربری گرافیکی مدیر حذف کنید. فایل یا دایرکتوری را که می خواهید حذف کنید پیدا کنید، روی آن کلیک راست کرده و گزینه Delete را انتخاب کنید. اما، اگر روی یک سرور بدون هد کار می کنید یا می خواهید چندین دایرکتوری را همزمان حذف کنید، بهترین گزینه حذف پوشه ها (پوشه ها) از خط فرمان است.

در این مقاله روش حذف دایرکتوری ها در لینوکس با استفاده از rmdir، rm، و find دستورات

قبل از اینکه شروع کنی

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

در اکثر سیستم های فایل لینوکس، حذف یک دایرکتوری نیاز به اجازه نوشتن در فهرست و محتوای آن دارد. در غیر این صورت، با خطای «عملیات مجاز نیست» مواجه خواهید شد.

دایرکتوری هایی با فاصله در نام خود باید با یک اسلش فرار کنند (/) شخصیت.

حذف دایرکتوری ها با rmdir

rmdir هست یک command-line ابزاری که به شما امکان می دهد دایرکتوری های خالی را حذف کنید. زمانی که نیاز به حذف دایرکتوری دارید به کارتان می آید، اما فقط در صورتی می خواهید این کار را انجام دهید که خالی باشد، بدون اینکه محتویات آن را بررسی کنید.

برای حذف دایرکتوری با استفاده از rmdir، دستوری را وارد کنید که به دنبال آن نام دایرکتوری را که می خواهید حذف کنید وارد کنید. به عنوان مثال، اگر می خواهید دایرکتوری به نام را حذف کنید dir1، شما تایپ می کنید:

rmdir dir1

اگر دایرکتوری خالی نباشد، با خطای زیر مواجه می شوید:

rmdir: failed to remove 'dir1': No such file or directory

در این مورد، شما نیاز به استفاده از rm قبل از اینکه بتوانید آن را حذف کنید، دستور دهید یا به صورت دستی محتویات دایرکتوری را حذف کنید.

پیشنهاد می‌کنیم بخوانید:  روش نصب Tomcat 9 در CentOS 7

حذف دایرکتوری ها با rm

rm

هست یک command-line ابزاری برای حذف فایل ها و دایرکتوری ها بر خلاف rmdir، rm دستور به شما امکان می دهد دایرکتوری های خالی و غیر خالی را حذف کنید.

به طور پیش فرض، وقتی بدون هیچ گزینه ای استفاده می شود، rm دایرکتوری ها را حذف نمی کند. برای حذف یک پوشه خالی، از -d (--dir) را انتخاب کنید و برای حذف دایرکتوری غیر خالی و تمام محتویات آن از -r (--recursive یا -R) گزینه.

به عنوان مثال، برای حذف یک فهرست به نام dir1 همراه با تمام محتویات آن، باید تایپ کنید:

rm -r dir1

اگر دایرکتوری یا فایلی در دایرکتوری محافظت از نوشتن باشد، از شما خواسته می شود که حذف را تایید کنید. برای حذف دایرکتوری بدون درخواست، از -f گزینه:

rm -rf dir1

برای حذف چندین دایرکتوری به طور همزمان، از را فراخوانی کنید rm دستور، به دنبال آن نام دایرکتوری ها که با فاصله از هم جدا شده اند. دستور زیر دایرکتوری های مشخص شده و محتویات آنها را حذف می کند:

rm -r dir1 dir2 dir3

این -i گزینه می گوید rm تا از شما بخواهد که حذف هر زیر شاخه و فایل را تأیید کنید. با این حال، اگر دایرکتوری حاوی تعداد زیادی فایل باشد، این ممکن است خسته کننده شود. در چنین مواقعی می توانید از -I گزینه، و rm قبل از ادامه حذف فقط یک بار از شما درخواست می کند.

rm -rI dir1

برای حذف دایرکتوری، تایپ کنید y و ضربه بزنید Enter.

rm: remove 1 argument recursively? y

همچنین می‌توانید از برنامه‌های توسعه‌دهنده معمولی برای مطابقت و حذف چندین فهرست استفاده کنید. به عنوان مثال، برای حذف تمام دایرکتوری های سطح اول در فهرست فعلی که به پایان می رسد _bak، از دستور زیر استفاده می کنید:

rm -r *_bak

استفاده از بسط های منظم هنگام حذف دایرکتوری ها ممکن است خطرناک باشد. توصیه می شود از ls
دستور فهرست کردن دایرکتوری ها قبل از اجرای rm دستور دهید، بنابراین می توانید ببینید کدام دایرکتوری ها حذف می شوند.

حذف دایرکتوری ها با find

find

هست یک command-line ابزاری که به شما امکان می‌دهد فایل‌ها و دایرکتوری‌ها را بر اساس یک عبارت داده شده جستجو کنید و روی هر فایل یا دایرکتوری مطابقت‌شده یک عمل انجام دهید.

رایج ترین سناریو استفاده از find دستور حذف دایرکتوری ها بر اساس یک الگو. به عنوان مثال، برای حذف تمام دایرکتوری هایی که به پایان می رسند _cache در دایرکتوری کاری فعلی، شما باید موارد زیر را اجرا کنید:

find . -type d -name '*_cache' -exec rm -r {} +

بیایید دستور بالا را تجزیه و تحلیل کنیم:

  • /dir – جستجوی بازگشتی در فهرست کاری فعلی (.).
  • -type d – جستجو را به فهرست ها محدود می کند.
  • -name '*_cache' – فقط دایرکتوری هایی را جستجو کنید که به آنها ختم می شود _cache
  • -exec – یک دستور خارجی را با آرگومان های اختیاری اجرا می کند. در این مورد، یعنی rm -r.
  • {} + – فایل های پیدا شده را به انتهای آن اضافه می کند rm فرمان
پیشنهاد می‌کنیم بخوانید:  دستور Ln در لینوکس (ایجاد پیوندهای نمادین)

حذف همه دایرکتوری های خالی

برای حذف همه دایرکتوری های خالی در درخت دایرکتوری، باید اجرا کنید:

find /dir -type d -empty -delete

در اینجا توضیحی در مورد گزینه های استفاده شده است:

  • /dir – جستجوی بازگشتی در /dir فهرست راهنما.
  • -type d – جستجو را به فهرست ها محدود می کند.
  • -empty – جستجو را فقط به دایرکتوری های خالی محدود می کند.
  • -delete – تمام دایرکتوری های خالی یافت شده در زیردرخت را حذف کنید. -delete می تواند فقط دایرکتوری های خالی را حذف کند.

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

همیشه ابتدا دستور را بدون آن تست کنید -delete گزینه و استفاده -delete به عنوان آخرین گزینه

/bin/rm: فهرست استدلال خیلی طولانی است

این پیغام خطا هنگام استفاده از rm دستور حذف دایرکتوری که حاوی تعداد زیادی فایل است. این اتفاق می‌افتد زیرا تعداد فایل‌ها از محدودیت سیستم در اندازه آرگومان خط فرمان بزرگتر است.

چندین راه حل مختلف برای این مشکل وجود دارد. به عنوان مثال، شما می توانید cd
به دایرکتوری بروید و زیر شاخه ها را یکی یکی حذف کنید، چه به صورت دستی یا با استفاده از یک حلقه.

ساده ترین راه حل این است که ابتدا تمام فایل های داخل دایرکتوری را با استفاده از آن حذف کنید find دستور دهید و سپس دایرکتوری را حذف کنید:

find /dir -type f -delete && rm -r /dir

نتیجه

با rm و find شما می توانید دایرکتوری ها را بر اساس معیارهای مختلف به سرعت و کارآمد حذف کنید.

حذف دایرکتوری ها ساده و آسان است process، اما باید مراقب باشید که داده های مهم را حذف نکنید.

اگر سوال یا بازخوردی در مورد استفاده از این دستورات دارید، لطفاً نظرات خود را بیان کنید.

rm rmdir پیدا کنید
terminal
برای نگارش بخشهایی از این متن ممکن است از ترجمه ماشینی یا هوش مصنوعی GPT استفاده شده باشد
لطفا در صورت وجود مشکل در متن یا مفهوم نبودن توضیحات، از طریق دکمه گزارش نوشتار یا درج نظر روی این مطلب ما را از جزییات مشکل مشاهده شده مطلع کنید تا به آن رسیدگی کنیم

زمان انتشار: 1402-12-28 01:37:03

امتیاز شما به این مطلب
دیدگاه شما در خصوص مطلب چیست ؟

آدرس ایمیل شما منتشر نخواهد شد.

لطفا دیدگاه خود را با احترام به دیدگاه های دیگران و با توجه به محتوای مطلب درج کنید