كيفية إزالة الملفات والأدلة بسرعة عبر Terminal (Bash Shell) [مغلق

StackOverflow https://stackoverflow.com/questions/2642147

سؤال

من النافذة الطرفية:

عندما أستخدم rm أمر يمكنه إزالة الملفات فقط.
عندما أستخدم rmdir قيامه يزيل فقط المجلدات الفارغة.

إذا كان لدي دليل متداخل مع الملفات والمجلدات داخل مجلدات مع الملفات وما إلى ذلك ، هل هناك أي طريقة لحذف جميع الملفات والمجلدات دون كل كتابة الأوامر الشاقة؟

إذا أحدث فرقًا ، فأنا أستخدم Mac Bash Shell من Terminal ، وليس Microsoft DOS أو Linux.

هل كانت مفيدة؟

المحلول

rm -rf some_dir

-R "متكرر" -f "القوة" (قمع رسائل التأكيد)

كن حذرا!

نصائح أخرى

rm -rf *

من شأنه أن يزيل كل شيء (المجلدات والملفات) في الدليل الحالي.

لكن كن حريص! قم بتنفيذ هذا الأمر فقط إذا كنت متأكدًا تمامًا من أنك في الدليل الصحيح.

نعم هنالك. ال -r يخبر الخيار rm ان نكون صecursive ، وإزالة التسلسل الهرمي للملف بأكمله في حججه ؛ بمعنى آخر ، إذا تم إعطاؤه دليلًا ، فسيقوم بإزالة جميع محتوياته ثم تنفيذ ما هو فعال rmdir.

الخياران الآخران الذي يجب أن تعرفه هما -i و -f. -i تمثل أناnteractive التي تجعل rm يطالبك قبل حذف كل ملف. -f تمثل Force يمضي قدما ويحذف كل شيء دون أن يسأل. -i هو أكثر أمانًا ، لكن -f أسرع؛ فقط استخدمه إذا كنت متأكد تماما أنت تحذف الشيء الصحيح. يمكنك تحديد هذه مع -r أم لا؛ إنه إعداد مستقل.

وكالعادة ، يمكنك الجمع بين المفاتيح: rm -r -i انه ببساطة rm -ri, ، و rm -r -f هو rm -rf.

لاحظ أيضًا أن ما تتعلمه ينطبق عليه bash في كل OS UNIX: OS X ، Linux ، FreeBSD ، إلخ. في الواقع ، rmبناء الجملة هو نفسه بشكل كبير كل قذيفة على كل نظام التشغيل UNIX. OS X ، تحت الغطاء ، هو في الحقيقة نظام BSD UNIX.

لذلك كنت أبحث في كل مكان لإزالة جميع الملفات في الدليل باستثناء بعض الدلائل والملفات ، أردت الاستمرار. بعد الكثير من البحث ، ابتكرت طريقة للقيام بذلك باستخدام Find.

find -E . -regex './(dir1|dir2|dir3)' -and -type d -prune -o -print -exec rm -rf {} \;

يستخدم بشكل أساسي Regex لتحديد الدلائل لاستبعادها من النتائج ثم يزيل الملفات المتبقية. أردت فقط وضعها هنا في حال احتاج شخص آخر إلى ذلك.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top