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


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.