ডিরেক্টরিতে থাকা সমস্ত ফাইল কীভাবে মুছে ফেলা যায়?


76

আমি একটি ডিরেক্টরিতে সমস্ত ফাইল এবং উপ-ডিরেক্টরি মুছে ফেলার চেষ্টা করছি। আমি rm -rসমস্ত ফাইল সরিয়ে ফেলতাম, তবে শীর্ষস্থানীয় ডিরেক্টরিটি বাদ দিয়ে আমি সমস্ত ফাইল এবং উপ-ডিরেক্টরিগুলি সরিয়ে দিতে চাই ।

উদাহরণস্বরূপ, আমার মতো শীর্ষস্থানীয় ডিরেক্টরি রয়েছে images। এটা তোলে ফাইল রয়েছে header.png, footer.pngএবং একটি সাব।

এখন আমি মুছে ফেলতে চাই header.png, footer.pngএবং উপ-ডিরেক্টরি, কিন্তু নয় images।

আমি কীভাবে এটি লিনাক্সে করতে পারি?


1
ডিরেক্টরিতে সিডি করুন এবং সেখানে rm -Rfথাকা সমস্ত ফাইল এবং ডিরেক্টরিগুলির একটি করুন।
— নওফাল ইব্রাহিম

উত্তর:


59

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


30
লুকানো ফাইল মোছা হবে না।
— reto

50

লুকানো ফাইলগুলি মুছতে, আপনাকে অবশ্যই উল্লেখ করতে হবে:

rm -r images/* images/.*

শেলগুলির সাথে যার গ্লোবগুলি অন্তর্ভুক্ত থাকে .এবং .., এটির মতো ত্রুটি ঘটবে

rm: cannot remove `.' directory `images/.'
rm: cannot remove `..' directory `images/..'

তবে এটি লুকানো ফাইল মুছে ফেলবে।

ত্রুটিযুক্ত তথ্য ছাড়াই একটি পন্থা হ'ল মাইন্ডপথের সাথে সন্ধান / মোছা ব্যবহার করা। এটি gnu-find।

find images -mindepth 1 -delete

আপনার সন্ধানের -mindepthবা -deleteভবিষ্যদ্বাণীকের অভাব হতে পারে , এক্ষেত্রে আপনি এটি করতে পারেন:

find images/. ! -name . -prune -exec rm -rf {} +

আমার পরামর্শ ছিল 'rm -r চিত্র /.*' ব্যবহার করা যা 'চিত্র / ..' এর সাথে মেলে তবে 'চিত্র /../ ..' নয় not পুনরাবৃত্তি উপরের দিকে যেতে পারে না, যেহেতু 'চিত্রগুলি /../ চিত্রসমূহ .. ..' আবার একই ডিরেক্টরি।
— ব্যবহারকারী অজানা

4
@ ডার্কহার্ট কমপক্ষে ১৯৯৪ সাল থেকে জিএনইউ ব্যবহারের জন্য এবং ইউএনআইএক্স -এর 70 এর দশকের শেষ থেকেrm .* মুছে ফেলা .বা এটি এখনও মুছে ফেলেনি । আপনি এমন একটি সিস্টেম খুঁজে পাবেন যা কোনও সংগ্রহশালার বাইরে ফাইল সিস্টেমকে উপরের দিকে ঘুরিয়ে দেয়। ..rm .*
— টেরডন

21

ডিরেক্টরিতে সমস্ত ফাইল এবং ডিরেক্টরিগুলি ( লুকানো রয়েছে সহ ) মুছতে , আপনি নিম্নলিখিতগুলি চেষ্টা করতে পারেন:

  • ls -Abসমস্ত ফাইল / ডিরেক্টরি মেলে ব্যবহার করুন

    cd dir_name && rm -rf `ls -Ab`
    
  • findসমস্ত ফাইল / ডিরেক্টরি মেলে ব্যবহার করুন

    find dir_name -mindepth 1 -delete
    

    বা, যদি আপনার findসমর্থন না করে -delete:

    find dir_name -mindepth 1 -exec rm -rf {}
    
  • ফোল্ডারটি মুছুন, তারপরে এটি পুনরায় তৈরি করুন

    rm -rf dir_name && mkdir dir_name
    
  • ব্যাশে

    shopt -s dotglob  
    rm -rf dir_name/*
    

নোট করুন যে rm -rf *ডিরেক্টরিতে ফাইলগুলি সম্পর্কে আপনার যদি জ্ঞান না থাকে তবে লাইক কমান্ডটি নিরাপদ নয়, কারণ -(হাইফেন) দিয়ে শুরু হওয়া কোনও ফাইল rmপতাকা হিসাবে ব্যাখ্যা করা হবে ...
— ভাস্যনাভিকভ

1
সম্পাদনা করুন: এটি নিরাপদ করতে, ব্যবহার করুনrm -rf ./* ./.*
— ভাস্যনাভিকভ

9

ডিরেক্টরিতে নিয়মিত সমস্ত ফাইল মুছে ফেলার জন্য , এই কমান্ডটি (জিএনইউ বা ফ্রিবিএসডি অনুমান করে find) যথেষ্ট ভাল:

find . -type f -delete

এটি সমস্ত নিয়মিত ফাইল যেমন সিমলিংকগুলিতে (তারা নিয়মিত ফাইলগুলিতে দেখায় বা না তা), ডিরেক্টরি, ফিফোস, সকেট, ডিভাইস ...

আরো দেখুন:

find . ! -type d -delete

ডিরেক্টরি বাদে যে কোনও ধরণের ফাইল মুছতে ।


6

এই সংস্করণটি ব্যবহার করে দেখুন:

 rm -r test/*

1
এটি লুকানো ফাইলগুলি সরবে না ("দিয়ে শুরু করা ফাইলগুলি")।
— gbmhunter

3

আমি findএখানে কমান্ড ব্যবহার করছি :

পদক্ষেপ 1: সমস্ত ফাইল সন্ধান করুন এবং সেগুলি মুছুন:

find /path/to/directory/ -type f -exec rm {} \;

উদাহরণ:

find /home/user/Desktop/images/ -type f -exec rm {} \;

পদক্ষেপ 2: সমস্ত উপ-ডিরেক্টরিগুলি সন্ধান করুন এবং সেগুলি মুছুন:

find /path/to/directory/ -type d -exec rm -R {} \;

find /path/to/directory/ -type dঅন্তর্ভুক্ত .তাই ডিরেক্টরি নিজেই মুছবে। -mindepthঅন্যরা যেমন বলেছে তেমন আপনাকেও সুইচটি ব্যবহার করতে হবে।
— আর্থার তাকা

3

প্রশ্নটি ছিল কোনও ডিরেক্টরি খালি করা = লুকানো ফাইলগুলি সহ একটি ডিরেক্টরিতে থাকা সামগ্রী মুছে ফেলা, কিন্তু ডিরেক্টরিটি নিজেই নয়। -মাইন্ডপথ 1 সহ ফাইন্ড কমান্ডটি আসলে যাওয়ার সঠিক উপায়, তবে ত্রুটি বার্তাগুলি এড়াতে এটি অবশ্যই ম্যাক্সডেপথ 1 এর সাথে যুক্ত হতে হবে:

find /path/to/dir -mindepth 1 -maxdepth 1 -exec rm -rf '{}' \;

0

আরএম এর বাক্য গঠন:

rm [OPTION]... FILE...

সুতরাং, আপনাকে যথাযথ পথটি স্পষ্টভাবে বর্ণনা করতে হবে, যেমন

rm -r sub_dir/

0

আপনি নিম্নলিখিত কমান্ড ব্যবহার করে ডিরেক্টরি মুছে ফেলতে পারেন:

sudo rm -r directoryname1/2/3/*

এটি 3 / * এর পরে পুরো ডিরেক্টরি মুছে ফেলা হবে।

উদাহরণস্বরূপ sudo rm -r ডাউনলোড / গান / *

এটি এর মধ্যে থাকা সমস্ত ফাইল মুছবে Downloads/song।


0

এটি আমার পক্ষে নিখুঁতভাবে কাজ করে, প্রতিবার বেশ কয়েকটি বৈচিত্র্য পরীক্ষা করে tested

ইমেজ ডিরেক্টরি ধারণ করে যে ডিরেক্টরি থেকে।

rm -frd ./images/*

আগে:

images/
    |_ header.png
    |_ footer.png
    |_ subdir/

পরে:

images/

নিশ্চিত নন এটা মূল প্রশ্ন স্পষ্ট হয়েছিল, কিন্তু যে বাতলান যদি না আপনি dotglob সক্ষম এই কোনো "ডট ফাইল" বা ছবি অধীনে ডট ডিরেক্টরির এড়িয়ে যাবে ( mkdir images/.somedir; touch images/.somefile)
— জেফ স্ক্যালার হলেন

0

ত্রুটি বার্তা ছাড়াই গোপন বিষয়গুলি সহ বর্তমান ডিরেক্টরিতে সমস্ত ফাইল এবং উপ-ডিরেক্টরি মুছতে :

rm -rf .[^.] .??* *

বা, মূল ডিরেক্টরি থেকে:

rm -rf images/.[^.] images/.??* images/*

Https://serverfault.com/a/47940/269538 থেকে ।



-2

"পরীক্ষা" ফোল্ডার এবং এর ভিতরে থাকা সমস্ত ফাইল মুছুন:

 rm -r test

ভিতরে সমস্ত ফাইল মুছুন কিন্তু ফোল্ডারটি "পরীক্ষা" রাখুন:

 rm -r test/*

-4

ফোল্ডারে সিডি করুন নিম্নলিখিত কমান্ডটি কার্যকর করুন:

ls |xargs rm -rf

2
এটি হোয়াইটস্পেসযুক্ত ফাইলের নামগুলিতে ব্যর্থ হবে। অন্যান্য কমান্ডের ইনপুট হিসাবে ls এর আউটপুট ব্যবহার করার বিরুদ্ধে আমি সুপারিশ করব, এটি সাধারণত অনিরাপদ।
— ধাগ
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.