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


108

আমি জানি এটি একটি উপ-ডিরেক্টরিতে এবং এর নীচে সমস্ত কিছু মুছে ফেলবে:

rm -rf <subdir-name>

তবে আপনি কীভাবে বর্তমান ডিরেক্টরিতে সমস্ত কিছু পাশাপাশি তার নীচের প্রতিটি উপ-ডিরেক্টরি এবং সেই সমস্ত উপ-ডিরেক্টরিগুলির সামগ্রীগুলি কীভাবে মুছবেন?


2
: এটি একটি প্রতারিত হতে হয়েছে stackoverflow.com/questions/550922/...
jmucchiello

উত্তর:


166

নিরাপদ কম্পিউটিং অনুশীলন করুন। কেবল শ্রেণিবিন্যাসের এক স্তর উপরে যান এবং একটি ওয়াইল্ডকার্ড এক্সপ্রেশন ব্যবহার করবেন না:

cd ..; rm -rf -- <dir-to-remove>

দুটি ড্যাশ --বলে rmযে <dir-to-remove>এটি কোনও কমান্ড-লাইন বিকল্প নয়, এমনকি যখন এটি কোনও ড্যাশ দিয়ে শুরু হয়।


8
কেন এই নিরাপদ?
ইয়েন

34
কারণ আপনি নির্দিষ্টভাবে একটি নামী নির্দেশিকাটির সাথে মেলে এবং এমন কিছু মুছার সম্ভাবনা কম যা আপনি মুছতে চান না।
tvanfosson

5
সত্য। আমি নিজেকে দেখতে পেলাম খুব সহজেই।
ইয়েন

26
এটি ডিরেক্টরি নিজেই মুছে না? আপনাকে পরে mkdir করতে হবে <dir-to-remove>। তবে সেই ডিরেক্টরিটিকে উল্লেখ করে যে কোনও হার্ডলিঙ্ক পরে একটি স্বতন্ত্র ডিরেক্টরি হবে।
জোহানেস স্কাউব - লিটব

5
@ ইয়েন, আপনি যদি ব্যবহার করেন তবে আপনি rm ./দুর্ঘটনাক্রমে টাইপ করুন rm . /যা দুর্যোগ হতে পারে।
ইরফান্দার

44

বর্তমানের নীচে থাকা সমস্ত ফাইল / ডিরেক্টরি মুছবে।

find -mindepth 1 -delete

আপনি যদি অন্য ডিরেক্টরিতে নিজের নামটি রেখেছেন তেমন করতে চান তবে আপনি কেবল এটির নাম রাখতে পারেন

find <name-of-directory> -mindepth 1 -delete

আপনি যদি এর উপ-ডিরেক্টরি এবং ফাইলগুলি নয়, কেবল ডিরেক্টরিটিও বাদ দিতে চান তবে বাদ দিন -mindepth 1-deleteসরানো হবে এমন জিনিসগুলির একটি তালিকা না পেয়ে এটি করুন ।


আমার উপ-ডিরেক্টরিতে থাকা সমস্ত ফাইল মুছতে হবে, তবে সাব-ডিরেক্টরিগুলি নিজে মুছতে চাইনি। <name-of-direcotry> -মাইন্ডপথ 2 -ডিলিট দুর্দান্ত কাজ করেছে!
টিম প্রিয়

আপনি -mindepth 1যদি একটি ডিরেক্টরি ( find <name-of-directory> -mindepth 1 -delete) নির্দিষ্ট করে থাকেন তবে আপনার প্রয়োজন । অন্যথায় জোহানেস ঠিক আছে এটি বর্তমান কার্যকারী ডিরেক্টরিটি (মুছে ফেলা হবে না) মুছবে না find -delete
ওয়েবোয়েড

আইএমও, বিশেষত স্ক্রিপ্টগুলিতে এটি সেরা উত্তর।
উইজোনসোলিউশন

1
আমি চেষ্টা করেছিলাম: find -mindepth 1 -deleteতবে আমি পেয়েছিলাম তবে আমি illegal option -- mদুর্দান্ত কাজটি অপসারণ করার পরে এটি দুর্দান্ত কাজ করেছে find . -delete
শ্যারন

41

আমি সবসময় কি টাইপ হয়

rm -rf *

এবং তারপরে ESC- * টিপুন এবং ব্যাশটি বর্তমান চলমান ডিরেক্টরি ডিরেক্টরিতে ফাইল এবং ডিরেক্টরিগুলির একটি সুস্পষ্ট তালিকায় * প্রসারিত করবে।

সুবিধাগুলি হ'ল:

  • আমি ENTER টিপানোর আগে মুছে ফেলার ফাইলগুলির তালিকা পর্যালোচনা করতে পারি।
  • কমান্ড ইতিহাসে "rm -rf *" ওয়াইল্ডকার্ড অক্ষত থাকবে না, যা ভুল সময়ে ভুল জায়গায় ভুল জায়গায় পুনরায় ব্যবহার করা যেতে পারে। পরিবর্তে, কমান্ডের ইতিহাসটিতে প্রকৃত ফাইলের নাম থাকবে।
  • "এক সেকেন্ড অপেক্ষা করুন ... কোন ফাইলগুলি আমি সবে মুছে দিয়েছি?" উত্তর দেওয়ার জন্য এটি একবার বা দু'বার সহজ হয়ে গেছে। ফাইলের নামগুলি টার্মিনাল স্ক্রোলব্যাক বাফার বা কমান্ডের ইতিহাসে দৃশ্যমান।

প্রকৃতপক্ষে, আমি এটি এতটাই পছন্দ করেছি যে .Bashrc- এ এই লাইনটি দিয়ে আমি এটি টিএবির জন্য ডিফল্ট আচরণ করে তুলেছি:

bind TAB:insert-completions

--এই উত্তরে অনুপস্থিত ? এই পদ্ধতির সামগ্রিকভাবে আমি অবশ্যই বলতে পারি দুর্দান্ত।
বেন ভয়েগট


22

ব্যবহার

rm -rf *

আপডেট: .বর্তমান ডিরেক্টরিটির জন্য স্ট্যান্ড, তবে আমরা এটি ব্যবহার করতে পারি না। কমান্ডটিতে .এবং এর জন্য সুস্পষ্ট চেক রয়েছে বলে মনে হচ্ছে ..। পরিবর্তে ওয়াইল্ডকার্ডকে গ্লোববিং ব্যবহার করুন। তবে এটি ঝুঁকিপূর্ণ হতে পারে।

একটি নিরাপদ সংস্করণ আইএমও হ'ল:

rm -ri * 

(এটি প্রতিটি ফাইল / ডিরেক্টরি মোছার আগে আপনাকে নিশ্চয়তার জন্য অনুরোধ করে))


13
"ঝুঁকিপূর্ণ হতে পারে" দুর্দান্তভাবে লকোনিক।

5
এই জাতীয় জিনিসগুলি করার সময়, আমি একটি দ্রুত ls -r খুঁজে পেয়েছি। প্রথমে আপনাকে দেখতে দিন আপনি কী মুছতে চলেছেন। আপনি পুরো ডিস্কটি মুছবেন না এমন একটি দ্রুত ধারণা দেওয়ার জন্য দরকারী ...
ধনী ব্র্যাডশো

2
এটি আরএম-আরএফ <সাব্বির- নাম> এর চেয়ে ঝুঁকিপূর্ণ কেন?
ইয়েন

2
@ ইয়েন - কারণ আপনি যদি এটি ভুল জায়গায় করেন তবে আপনি বিপর্যয়কর ফলাফল পেতে পারেন। ভুল জায়গায় একটি নির্দিষ্ট নাম ব্যবহার করা কেবল তখনই ভুল হতে পারে যদি সেখানে একই উপ-নির্দেশিকা উপস্থিত থাকে।
tvanfosson

1
আপনি সন্তানের মধ্যে থাকার সময় পিতামাতাকে সম্ভবত মুছতে পারবেন না।
স্পষ্টভাবে

6

এটি সঠিক যে rm –rf .কোনও বর্তমান উপ-ডিরেক্টরি এবং তাদের সামগ্রী সহ সরাসরি বর্তমানের সমস্ত কিছু সরিয়ে ফেলবে। একক বিন্দু ( .) বর্তমান ডিরেক্টরির মানে। সাবধান করতে হবে না rm -rf ..যেহেতু ডবল ডট ( ..) পূর্ববর্তী ডিরেক্টরি মানে।

এটি বলা হচ্ছে, আপনি যদি আমার মতো হন এবং একই সাথে একাধিক টার্মিনাল উইন্ডোগুলি খোলা থাকে তবে আপনি আরও নিরাপদ থাকতেন এবং এর rm -ir .কারণ বুঝতে কমান্ড আর্গুমেন্টগুলি দেখুন use

প্রথমে, যদি আপনি rmকমান্ড ম্যান পৃষ্ঠাটি দেখে থাকেন ( man rmবেশিরভাগ ইউনিক্সের নীচে) আপনি লক্ষ্য করেন যে –r"ডিরেক্টরিগুলির বিষয়গুলি পুনরাবৃত্তভাবে মুছে ফেলুন" means সুতরাং, rm -r .একা একা করার ফলে বর্তমান ডিরেক্টরিতে সমস্ত কিছু মুছে ফেলা হবে এবং সমস্ত কিছু এটিকে প্রশমিত করবে।

ইন rm –rf .যোগ -f মানে হলো "অবাস্তব ফাইল উপেক্ষা করা, কখনও প্রম্পট"। এই কমান্ডটি বর্তমান ডিরেক্টরিতে থাকা সমস্ত ফাইল এবং ডিরেক্টরি মুছে ফেলে এবং আপনাকে সত্যই এটি করতে চাইছে তা নিশ্চিত করতে কখনই আপনাকে অনুরোধ করে না। -fবিশেষত বিপজ্জনক যদি আপনি কোনও বিশেষাধিকার ব্যবহারকারীর অধীনে কমান্ডটি পরিচালনা করেন যেহেতু আপনি যে যা চান তা নিশ্চিত করার সুযোগ না পেয়ে আপনি যে কোনও ডিরেক্টরিতে থাকা সামগ্রী মুছতে পারেন।

Otherhand তারিখে, এ যে প্রতিস্থাপন মানে হলো "কোন অপসারণের আগে প্রম্পট"। এর অর্থ আরএম খুশির সাথে আপনার সমস্ত ফাইল মুছে ফেলার আগে আপনি "ওপস! এটি আমি চাই না" বলার সুযোগ পাবেন।rm -ri .-i-f

আমার প্রারম্ভিক সিসাদমিনের দিনগুলিতে আমি rm -rf /সম্পূর্ণ সুবিধাগুলি (মূল) দিয়ে লগ ইন করার সময় একটি সিস্টেমে একটি কাজ করেছি। ব্যাকআপগুলি থেকে সিস্টেমটি পুনরুদ্ধার করার ফলে দুটি দিন অতিবাহিত হয়েছিল। এজন্য আমি এখনই চাকরী করি rm -ri


6

কেমন:

rm -rf "$(pwd -P)"/* 

27
jQuery তাই শক্তিশালী।
পাভেল

5
rm  -rf * 

এটা করবেন না! এটা বিপদজনক! আপনি সঠিক ডাইরেক্টরিতে নিশ্চিত হন!


4

আপনি সঠিক ডিরেক্টরিতে আছেন তা নিশ্চিত করুন

আরএম-আরএফ *

2
এটি ফাইল বা সাব ডিরেক্টরিগুলি মুছবে না যার নাম একটি পিরিয়ডের সাথে শুরু হয়।

1
সত্য। আমার পরীক্ষায়, আরএম-আরফও হয় না। tvanfosson তার "সিডি ..; আরএম -rf <dir-to-remove>" দিয়ে সেরা সমাধান আইএমও রয়েছে
ডিজিটালজেল

2

এই সহজতম নিরাপদ এবং সাধারণ সমাধানটি সম্ভবত:

find -mindepth 1 -maxdepth 1 -print0 | xargs -0 rm -rf

1

আমি বিশ্বাস করি এই উত্তরটি আরও ভাল:

/unix/12593/how-to-remove-all-the-files-in-a-directory

যদি আপনার শীর্ষ-স্তরের ডিরেক্টরি বলা হয় images, তবে চালান rm -r images/*। এটি চিত্রের মধ্যে থাকা প্রতিটি ফাইল বা ডিরেক্টরিতে *চালাতে শেল গ্লোব অপারেটরটি ব্যবহার rm -rকরে।

মূলত আপনি এক স্তর উপরে যান এবং তারপরে X ডিরেক্টরিতে থাকা সমস্ত কিছু মুছুন। এইভাবে আপনি এখনও নির্দিষ্ট করে দিচ্ছেন যে ফোল্ডারের মূল বিষয়বস্তু মুছে ফেলা উচিত, যা মূল ফোল্ডারটি সংরক্ষণের সময় 'এখানে সবকিছু মুছুন' বলার চেয়ে নিরাপদ, (যা আপনাকে কখনও কখনও অনুমতি দিতে পারে না বা কেবল চান না বলে আপনি চান ফোল্ডারের বিদ্যমান অনুমতিগুলি পরিবর্তন করতে)

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