ডিরেক্টরিতে মুছে ফেলা ব্যতিরেকে ডিরেক্টরিতে সমস্ত ফাইল এবং উপ-ডিরেক্টরিগুলি কীভাবে সরিয়ে ফেলা যায়?


53

ডিরেক্টরি মুছে ফেলা ছাড়া কোনও ডিরেক্টরিতে সমস্ত ফাইল এবং উপ-ডিরেক্টরি মুছে ফেলার জন্য কোন আদেশ রয়েছে?

উদাহরণস্বরূপ, যদি আমার কাছে উপ-ডিরেক্টরি "1", "2", "3" সহ "dontDeleteMe" ডিরেক্টরি রয়েছে এবং প্রতিটি উপ-ডিরেক্টরিতে এর কয়েকটি ছবি থাকে তবে আমি কীভাবে উপ 1 ডিরেক্টরি "1", "2" এবং "3" সরিয়ে ফেলতে পারি? এবং সেগুলির মধ্যে সমস্ত ফাইল, পিতামাতার ডিরেক্টরিটি "dontDeleteMe" না সরিয়ে?

উত্তর:


66

ডিরেক্টরিটি সরিয়ে না দিয়ে কোনও ডিরেক্টরিতে সমস্ত কিছু সরিয়ে ফেলতে টাইপ করুন:

rm -rfv dontDeleteMe/*

দয়া করে মনে রাখবেন, /*অংশটি খুব গুরুত্বপূর্ণ। আপনি যদি এর আগে কোনও স্থান রেখে দেন তবে এটি *আপনার বর্তমান ডিরেক্টরিতে থাকা সমস্ত ফাইল মুছে ফেলবে।

এছাড়াও, সঙ্গে বাজানো খুব সতর্কতা অবলম্বন করা আবশ্যক rm, -rএবং *একই কমান্ড সমস্তকিছু। এগুলি একটি বিপর্যয়কর সমন্বয় হতে পারে।

আপডেট: ঠিক আছে, আমি বুঝতে পেরেছি যদি আপনার কাছে গোপন / ডট ফাইল থাকে [শুরুতে বিন্দু সহ ফাইলের নাম, প্রাক্তন .hidden] তবে এটি সেই ফাইলগুলি অক্ষত রেখে দেবে।

সুতরাং সত্যই, আসল প্রশ্নের সহজ সমাধান হ'ল: rm -rfv dontDeleteMe && mkdir dontDeleteMe

অন্য এক ব্যবহার করতে হবে findএর -execবিকল্প বা পাইপ xargs(নীচে):

find dontDeleteMe/* -print0 | xargs -0 rm -rv


আপনি xargs ব্যবহারের একটি উদাহরণ দিতে পারেন? Xargs কি?
justingrif

@ অ্যাডজিনিফ: find dontDeleteMe/* -print0 | xargs -0 rm -rv আমি বিশ্বাস করি বেশিরভাগ ক্ষেত্রেই এটি কার্যকর হবে, নির্বিশেষে জায়গাগুলি, এবং কী না। তবে সিডি করুন /tmp/এবং একটি পরীক্ষা ডিরেক্টরি তৈরি করুন এবং এটি ব্যবহার করে দেখুন। :)
ম্যাট

ওহ, এবং ম্যানপেজটি
ম্যাট

5
ডিরেক্টরি পুনরায় তৈরি করা এর বিষয়বস্তু মোছার সমান নয়। উদাহরণস্বরূপ umask ডিরেক্টরি অনুমতি পার্থক্য, মালিক পার্থক্য, ইত্যাদি ... এনজোটিব এর উত্তর আপনার মূল বাক্য গঠন দিয়ে সমস্যাগুলি সমাধান করবে

3
এটি একটি ভাল উত্তর নয়। * ব্যবহার করা বিপজ্জনক, এবং "ডটগ্লোব" ছাড়াই ডটফাইলে কাজ করবে না (নীচে দেখুন)। rm -rf dontDeleteMe && mkdir dontDeleteMeএকই অনুমতি / মালিক (গুলি) দিয়ে দির আবার তৈরি হয়েছে তা নিশ্চিত করে না। পরিবর্তে, find dontDeleteMe/ -mindepth 1 -deleteনীচের একটি রূপ ব্যবহার করুন ।
নিলস টোডটম্যান

27

একমাত্র কারণ rm -r ./*সবসময় কাজ করে না কারণ আপনার লুকানো ফাইল এবং / অথবা ফোল্ডারে সাথে মেলে না থাকতে পারে *

এই লক্ষ্যে, সমস্ত bashকিছু *মিলিয়ে এমনকি গোপন বস্তুগুলির জন্য একটি বিকল্প সরবরাহ করুন :

cd dont-delete-me
shopt -s dotglob
rm -r ./*

dotglobএটির পূর্বনির্ধারিত (আনসেট) অবস্থানে পুনরায় সেট করতে এটি কার্যকর হতে পারে , আপনি যদি উপরের আদেশগুলি কার্যকর করেছিলেন যেখানে শেলটি ব্যবহার করা চালিয়ে যান:

shopt -u dotglob 

আপনার বিপুল সংখ্যক ফাইল থাকা
এস .. 19

23

টার্মিনাল খুলুন ( Ctrl+ Alt+ T) পিপড়া এটি টাইপ করুন:

find somedir -mindepth 1 -delete

এই মধ্যে সব ফাইল ও ডিরেক্টরিগুলি ম্যাচ হবে somedirএবং তার (ঠান-) শিশুদের "লুকানো" ডট ফাইল সহ কিন্তু ব্যতীত somedirনিজেই কারণ -mindepth 1, তারপর -deleteতাদের।


AskUbuntu স্বাগতম! যদিও আপনার উত্তরটি মূল পোস্টারকে সম্ভাব্য সাহায্য করতে পারে, তথাপি অভাবের কারণে এটি তাকে কী করতে পারে তার ব্যাখ্যা দেওয়ার জন্য আপনার উত্তর অসম্পূর্ণ করে তোলে।
Oyibo

3
অভাব ব্যাখ্যা, কিন্তু এখনও সেরা উত্তর। ওএসএক্সেও কাজ করে (অবশ্যই টার্মিনাল খোলার উপায় বাদে)।
noamtm

6
find /dontDeleteMe/ -xdev -depth -mindepth 1 -exec rm -Rf {} \;

xdevকেবলমাত্র ডিভাইস সীমার মধ্যে ফাইলগুলি মুছতে বিকল্প ব্যবহার করুন ।


জিএনইউ ফাইন্ড আছে -delete। এটি এর থেকে বোঝা যায় -depthএবং সহজে মনে রাখা সহজ-depth -exec rm -Rf {} \;
নিলস টোডটম্যান

4

"ডন্টটেলিট" নামক বেস ডিরেক্টরি বাদে সমস্ত ফাইল এবং উপ-ডিরেক্টরি মুছতে (টার্মিনালে):

rm -rf dontdelete/*

এটি লুকানো ফাইলগুলি মুছবে না, সুতরাং "সমস্ত ফাইল" একটি বিবৃতি খুব সাহসী হতে পারে।
স্টিফান ভ্যান ড্যান আকার

4

আপনি পতাকা findসহ ব্যবহার করতে পারেন -delete:

find dontDeleteMe/* -delete

/*গুরুত্বপূর্ণ হিসেবে বলা হয়েছে যে সব হয় findফোল্ডার "dontDeleteMe" বলা কেবল অনুসন্ধান ব্যবহার করুন।

-deleteপতাকাটি findকমান্ডের শেষে রয়েছে তাও নিশ্চিত করুন ।


1
আপনি সক্ষম না করা হলে এই সমাধান কোনও লুকানো ফাইল মুছবে না dotglob। অন্যথায়, -mindepth 1পতাকা বিকল্পটি ব্যবহার করা এটির কাজ করার একমাত্র উপায় বলে মনে হচ্ছে।
স্টেফান ভ্যান ড্যান আকার

3
rm -rf  directory/{.*,/*}

কি বলে:

দিয়ে শুরু হওয়া সমস্ত ফাইল সরান। "ডিরেক্টরি" এবং অন্যান্য সমস্ত ফাইলগুলিতে।

যদিও নেফতাসের দ্বারা দয়া করে উল্লেখ করা হয়েছে তবে এই সমাধানটি নিরাপদ নয়!

নিরাপদ সমাধানটি হ'ল:

 rm -rf directory/!(.|..)

এই কমান্ডটি সম্ভবত বিপজ্জনক হতে পারে, যেহেতু আপনি .এবং ..ডিরেক্টরিগুলিও অন্তর্ভুক্ত করছেন । এতে পরিবর্তন {.*}করে এড়ানো যেতে পারে {.??*}তবে আপনি কেবলমাত্র একটি অক্ষরের সাথে লুকানো ফাইলগুলি মুছবেন না .a
স্টিফান ভ্যান ড্যান আকার

এ সম্পর্কে কি? RM -rf ডিরেক্টরিটি /! (|। ..)
Tebe থেকে

আমি যেটা নিয়ে এসেছি তার থেকে এটি অনেক ভাল সমাধানের মতো দেখাচ্ছে। আমি কি আপনার উত্তর সম্পাদনা করতে পারি?
স্টিফান ভ্যান ড্যান আকার

প্রস্তাব গৃহীত হয়েছে)
তেব

1

আমি নিশ্চিত নই কেন এটি এত জটিল, আমি ভুল হলে আমাকে সাহায্য করুন

cd DoNotDeleteDir #<- this is just to make sure we are inside
find . | xargs rm -rf

এটাই


এটির সাথে বর্তমান ডিরেক্টরিটি মুছে ফেলার চেষ্টা করার সামান্য ত্রুটি রয়েছে, যা অবশ্যই কাজ করে না, কারণ এটি এখনও আমন্ত্রিত শেলের কার্যকরী ডিরেক্টরি হিসাবে ব্যবহৃত হয়।
ডেভিড ফোস্টার 13

1

আরও সহজ উত্তর আছে:

  1. cd dontDeleteMe

  2. rm -rf *

বেসিক সিস্টেম অ্যাডমিনিস্ট্রেশন বক্তৃতার সময়: আপনি যখন এইরকম স্যুইপিং কমান্ড ব্যবহার করেন তখন আপনি কোথায় আছেন সেদিকে মনোযোগ দিতে ভুলবেন না।

আমি যথেষ্ট বলতে পারি না। আমাকে একটি বাক্স পুনরুদ্ধার করতে হয়েছে কারণ কেউ মনোযোগ দিচ্ছে না rm -rf *এবং / এ থাকাকালীন টাইপ করছিল।

* নিক্স ধরে নিচ্ছে যে আপনি যদি রুট হন বা আপনি যদি রুট হিসাবে sudo-ing হয় তবে আপনি কী করছেন তা আপনি জানেন। সুতরাং নিশ্চিত হয়ে নিন যে কাজটি করার আগে আপনি কী করছেন know

একটি বিকল্প যা আপনার 'সিডি' কমান্ডটি ব্যবহার করার আগে 'আরএম' জারি করার আগে কাজ করে তা নিশ্চিত করে

cd dontDeleteMe && rm -rf *

6
এটি একটি বিপজ্জনক পরামর্শ। আপনি যা চান তা হ'ল: cd dontDeleteMe && rm -rf *
ইজকাটা

@ ইজকাটা বা rm কমান্ড জারির আগে সিডি অপারেশন সফল হয়েছিল কিনা তা নিশ্চিত হয়ে নিন।
এলিয়াহ কাগন

1
@ এলিয়াকাগান আমার কোড স্নিপেট ঠিক এটিই করেন ...
ইজকাটা

আসলে এটি আপনার পরামর্শের চেয়ে কোনও বা কম বিপজ্জনক নয়। সমস্ত অ্যান্ড অ্যান্ড কাজগুলি হ'ল দুটি কমান্ডকে এক সাথে শৃঙ্খলাবদ্ধ করা যাতে তারা একই সাথে সম্পাদন করে। আরএম-আরএফ * চালানোর আগে আপনাকে আমার পদ্ধতিটি যদি নিরাপদ হয় তবে আপনাকে থামাতে হবে এবং লুক করতে হবে। চেক ডাবল থামানো সর্বদা ভাল is
ব্যবহারকারী 30619

5
@ user30619 &&অপারেটর কেবল কমান্ডগুলি একসাথে শৃঙ্খলিত করে না; এটি প্রয়োজন যে পরবর্তী কমান্ড কার্যকর করার আগে প্রতিটি কমান্ড সফল হয়। যদি cdকোনও কারণে কমান্ডটি ব্যর্থ হয় (ডিরেক্টরি উপস্থিত নেই, সুবিধাগুলি ইত্যাদি) তবে rmকমান্ডটি কার্যকর হবে না। আমি নিরাপদ কল করব।
ean5533

0
  1. আমার পক্ষে সবচেয়ে সহজ জিনিস - উইন্ডোজ বিশেষজ্ঞ তবে উবুন্টু নবাগত
  2. লঞ্চারের ফাইল আইকনে ক্লিক করুন
  3. যে ডিরেক্টরিতে আপনি মুছে ফেলতে চান সেখানে যে ফাইল এবং ফোল্ডার রয়েছে সেখানে ডিরেক্টরিতে নেভিগেট করুন
  4. ফাইলগুলির পাশের উইন্ডোটির ফাঁকা জায়গায় ডান ক্লিক করুন এবং "টার্মিনালে খুলুন" ক্লিক করুন - ফাইল উইন্ডোটি খোলা রেখে দিন
  5. একটি টার্মিনাল উইন্ডো খোলা হবে এবং আপনি যে ফোল্ডারে অবস্থিত তা "সেট" হয়ে যাবে
  6. আপনি "dir" টাইপ করতে পারেন (আমি টাইপ করার সময় উদ্ধৃতি উপেক্ষা করুন) এবং ফাইল এবং ফোল্ডারগুলির একটি তালিকা দেখানোর জন্য টার্মিনালের জন্য এন্টার টিপুন - ডান ফোল্ডারে আপনি "" রয়েছেন তা প্রমাণ করার জন্য
  7. "rm -rf *" টাইপ করুন এবং এন্টার টিপুন
  8. সিস্টেম মোছার জন্য ফোল্ডার / ফাইলগুলির আকারের উপর নির্ভর করে বিরতি দেবে
  9. টার্মিনাল প্রম্পট যখন ফিরে আসবে, আপনি যে ফাইলগুলির উইন্ডোটি খোলেন সেগুলি এখন "ফোল্ডারটি খালি" বলে দেবে
  10. এই পদ্ধতির সাথে আমার সাফল্য ছিল এবং এটি ফাইল উইন্ডোতে এবং টার্মিনাল উইন্ডোতে দির কমান্ডের ফলে ফাইল / ফোল্ডার উভয়ই দেখে আমার সান্ত্বনা পেয়েছে
  11. আমি এও সান্ত্বনা পেয়েছি যে ফাইলগুলি উইন্ডোটি ফোল্ডারটি এখন খালি প্রদর্শন করেছে - বিশেষত যেহেতু আমি এই ফাইলগুলিকে ট্র্যাশ ফোল্ডারের সন্ধানের আশেপাশে তাড়া করছি they
  12. যারা উত্তর জমা দিয়েছেন তাদের প্রত্যেককে ধন্যবাদ - এটি খুব তথ্যপূর্ণ ছিল

এটি বেশ জটিল বলে মনে হচ্ছে - বিশেষত যেহেতু আপনি rm -rf *যেভাবেই চলতে শুরু করছেন ।
ডেভিড ফোস্টার

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.