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


289

আমি পেয়েছি সবচেয়ে কাছাকাছি

# rm /path/to/directory/*.*

তবে যে ফাইলগুলির এক্সটেনশন নেই তাদের জন্য এটি কাজ করে না ...

উত্তর:


340

লিনাক্স এক্সটেনশন ব্যবহার করে না। নামটি কোনও এক্সটেনশান করতে চান কিনা তা সিদ্ধান্ত নেওয়া ফাইলটির স্রষ্টার উপর নির্ভর করে। এটি কোন ধরণের ফাইলের সাথে লিনাক্স করছে তা নির্ধারণের জন্য লিনাক্স 1 ম বাইটের দিকে তাকান।

ডিরেক্টরিতে সমস্ত কিছু অপসারণ করতে:

rm /path/to/directory/*

আপনি -rবিকল্পটি ব্যবহার করতে পারেন , উদাহরণস্বরূপ:

rm -r /path/to/directory/*

আপনি যে ডিরেক্টরিটির বিষয়বস্তু সরিয়ে ফেলছেন সেই ডিরেক্টরিতে কোনও উপ ডিরেক্টরি (তাদের সমস্ত সামগ্রী সহ) অপসারণ করতে। অন্যথায় এটি আপনাকে জানাতে একটি ত্রুটি প্রদর্শন করবে এটি ডিরেক্টরিটি সরিয়ে দিচ্ছে না।


13
আপনি যদি দৌড়ানোর shopt -s dotglobআগে চালিত লুকানো ফাইলগুলি মুছতে চানrm (...)
তবে

7
* অর্থ all files;) এর *.*অর্থ হ'ল .কোথাও নামে থাকা সমস্ত ফাইল
রিনজউইন্ড

10
@ রিনজুইন্ড, আরও সঠিকভাবে বলা হচ্ছে, তারকাচিহ্নটির অর্থ "শূন্য বা কোনও চরিত্রের আরও বেশি"। এর *a*অর্থ শূন্য বা আরও বেশি অক্ষর, তারপরে aশূন্য বা আরও বেশি অক্ষর। ফাইলের মেলে দিবে happy, apple, aবা la
অসন্তুষ্টগোট

7
@ ব্যবহারকারী 784637 আপনি খুব সহজেই মুগ্ধ
হয়েছেন

1
আপনি যে আদেশটি চান তা এখানে: rm - *
anon58192932

168
  • ফোল্ডারটির সমস্ত সামগ্রী ( সমস্ত অভ্যন্তরীণ ফোল্ডার সহ ) মুছে ফেলার জন্য :

    rm -rf /path/to/directory
    
  • ফোল্ডারের সমস্ত সামগ্রী মুছে ফেলার জন্য ( সমস্ত অভ্যন্তর ফোল্ডার সহ ) তবে ফোল্ডারটি নিজেই নয়:

    rm -rf /path/to/directory/*
    

    অথবা

    rm -rf /path/to/directory/{*,.*}
    

    আপনি যদি নিশ্চিত করতে চান যে গোপন ফাইল / ডিরেক্টরিগুলিও সরানো হয়েছে।

  • কোনও ফোল্ডারের অভ্যন্তর থেকে সমস্ত "ফাইল" অপসারণ করতে ( অভ্যন্তরীণ ফোল্ডারগুলি সরানো হচ্ছে না ):

    rm -f /path/to/directory/{*,.*}
    


  • সতর্কতা : যদি আপনার পথে ফাঁকা স্থান থাকে তবে সর্বদা উদ্ধৃতি ব্যবহার করা নিশ্চিত করুন।

    rm -rf /path/to the/directory/*
    

    2 টি পৃথক rm -rfকল সমতুল্য :

    rm -rf /path/to
    rm -rf the/directory/*
    

    এই সমস্যা এড়ানোর জন্য, আপনি ব্যবহার করতে পারেন 'একক উদ্ধৃতি '( প্রসারিত না শেল ভেরিয়েবল) অথবা "ডাবল কোট "( বিস্তৃতি শেল ভেরিয়েবল):

    rm -rf "/path/to the/directory/"*
    


কোথায়:

  • rm- এর অর্থ " অপসারণ "
  • -f- এর অর্থ দাঁড়ায় " বল " যার অর্থ যখন আপনি কোনও সংরক্ষণাগার অপসারণ করতে চান তবে আপনাকে জিজ্ঞাসা / অনুরোধ করতে চাইবে না, উদাহরণস্বরূপ helpful
  • -r- এর অর্থ " রিকার্সিভ " যার অর্থ আপনি প্রতিটি ফোল্ডারে পুনরাবৃত্তভাবে যেতে চান এবং সমস্ত কিছু সরাতে চান।

8
আমি এটি আরও ব্যাপক এবং সহায়ক উত্তর বলে মনে করেছি যে উত্তরটি গৃহীত হিসাবে চিহ্নিত করা হয়েছে এবং তার উপরে above
অনুপ্রেরণা

2
rm -rf /path/to/directory/*উদাহরণস্বরূপ ফোল্ডারে কোনও লুকানো ফাইল সরান না .htaccess। হতে পারে rm -rf /path/to/directory/.? চেষ্টা করে দেখেনি।
মার্ক বেরি

@ মারকবেরি আরএম-আরএফ /পাথ / টো / ডাইরেক্টরি /.*
লিলিয়ান এ

@ লিলিয়ানআ.মোরারু, আমি আজ কিছু পরীক্ষা করেছি। rm -rf /path/to/directory/.*কেবলমাত্র নির্দিষ্ট ডিরেক্টরিতে লুকানো ফাইল (গুলি) মুছে দেয়। লুকানো ফাইলগুলি মুছতে, দৌড়ানোর shopt -s dotglobআগে দৌড়াতে @ রিনজউইন্ডের উত্তর সম্পর্কে @ দানজল এর মন্তব্যে তাকান rm -rf /path/to/directory/*
মার্ক বেরি

সতর্কতা: rm -rf /path/to/directory/.*আমার সিস্টেমে আইটেমগুলি মুছে ফেলার কারণে /path/to। ভাগ্যক্রমে, আমি সবেমাত্র আমার সম্পূর্ণ ডেটা আলাদা ডিস্কে ব্যাক আপ করেছিলাম। বলা বাহুল্য, rm -rf /path/to/directory/.*আপনি নিজের কম্পিউটারটিকে পৃথক / সুরক্ষিত স্থানে ব্যাক আপ না করলে কমান্ডটি জারি করবেন না !
আইনজীবি

43

ডিরেক্টরিতে সমস্ত ফাইল মুছে ফেলার জন্য (লুকানো ফাইল এবং উপ-ডিরেক্টরি সহ) চালান:

rm -rf /path/to/directory/{*,.*}

1
এটি সুন্দর গৃহীত উত্তর হওয়া উচিত। ধন্যবাদ!
নাম জি ভি ইউ

3
এই গ্লোব মেলে না "।" এবং খুব?
হার্টজস্প্রং

4
@ হার্টজস্প্রং - এটি করে এবং এটি আপনাকে একটি সতর্কতা দেয় যে এটি মুছতে পারে না ./এবং ../, তবে এটি লুকানো ফাইলগুলি মুছে ফেলবে।
রায়ান হুইল 21'12

এটি ম্যাক কনসোলটিতে কাজ করে না, লুকানো ফাইলগুলি এখনও সেই কমান্ড লাইনের সাথে রয়েছে।
অগাপিটোক্যান্ডেমোর

বর্তমান ডিরেক্টরিটি সবকিছু মুছে ফেলার জন্য:rm -r $(pwd)/{*,.*}
জিমি অ্যাডারো 21

10

আপনি যদি / पथ / থেকে / ডিরেক্টরিতে কেবল ফাইলগুলি মুছতে চান তবে আপনি এটি করতে পারেন

find /path/to/directory -type f -print0| xargs -0 rm 

অথবা

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

আপনি এর সাহায্যে লোড করতে পারেন find, সুবিধাটি হ'ল এটি যা আপনি পাইপ না করে যা পাওয়া যায় তার তালিকা তৈরি rmকরতে পারেন যাতে আপনি শুরু করার আগে দেখতে পাবেন কী কী মুছে ফেলা হবে।


2
GNU findএকটি -deleteশিকারী হিসাবে আপনি যদি এখনও ব্যবহার করতে চান তবে এর সাথে -execপ্রতিস্থাপন \;করা কলগুলি একত্রিত করবে, দক্ষতা বাড়িয়ে +তুলবে rm
enzotib

1
'+' দিয়ে প্রচুর পরিমাণে ফাইল সমস্যার কারণ হতে পারে, যেহেতু তালিকাটি খুব বড় হবে, আরএম-ফ * এর মতোই। এবং একই ফোল্ডার থেকে বড় পরিমাণে ফাইল সরানোর সময় (মিলনের সাথে কথা বলার) উভয়টিই ভাল না :) শেষ পর্যন্ত সি ++ এসেছিল এবং দির-গাছে ইনোডের জন্য ফাইলগুলি সরিয়ে দেয়।
ওসিস

3
আরএম এর পরে আপনার সত্যিই একটি যুক্ত করা উচিত। তা ছাড়া আপনার যদি কোনও ফাইলের নাম থাকে - rf বা অনুরূপ আরএম এর সাথে যুক্তি হিসাবে ব্যাখ্যা করা হবে। যেমন xargs -0 rm - অথবা -exec rm - {} \;
রিচম

আপনি xargs -n আর্গুমেন্ট প্রদান করতে পারেন। এটা আর্গুমেন্ট এর একটি সর্বোচ্চ সংখ্যক হচ্ছে RM কমান্ড বিভক্ত অর্থাত্ কারণ হবে '-n 100 -0 RM xargs -' এর 100 খন্ডে ফাইল মুছে ফেলা হবে
Richm

1
কোনও সাব-ডিরেক্টরি থেকে ফাইলগুলি ফেরত না দেয় তা নিশ্চিত করতে আপনি -maxdepth 1 যোগ করতে পারেন add অর্থাত / পাথ / টু / ডিরেক্টরি -ম্যাক্সডেপথ 1-টাইপ চ
রিচম

7

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

  • ফোল্ডারটি মুছুন, তারপরে এটি পুনরায় তৈরি করুন

    rm -rf dir_name && mkdir dir_name
    
  • ব্যবহার find

    find dir_name -mindepth 1 -delete  
    

এখানে আমরা -mindepth 1ডিরেক্টরি dir_name নিজেই বাদ দিতে নির্দিষ্ট করি ।
নীচের লিঙ্কটি একবার দেখুন:
https://unix.stackexchange.com/questions/12593/how-to-remove-all-the-files-in-a-d ডিরেক্টরি


আপনার পরামর্শের জন্য ধন্যবাদ এবং আমি লিঙ্কগুলির জন্য আরও ব্যাখ্যা যুক্ত করেছি।
zeekvfu

3
সাবধান হন, যেহেতু ফোল্ডারটি মুছে ফেলা এবং পুনরায় তৈরি করার ফলে এই ফোল্ডারটির জন্য বিভিন্ন / ভুল অনুমতি হতে পারে!
einjohn

6

আপনি যদি সমস্ত উপ ডিরেক্টরি এবং ডিরেক্টরি নিজেই সরাতে চান তবে আপনি এটি ব্যবহার করতে পারেন rm -rf /path/to/directory। তবে সর্বদা রিটার্ন rm -rfটিপানোর আগে আপনার লাইনটি ডাবল-চেক করুন, প্রচুর পরিমাণে হাবুডের কারণ হতে পারে, উদাহরণস্বরূপ, যদি আপনি অতিরিক্ত স্ক্রুরের অনুমতি প্রাপ্ত হওয়ার সাথে সাথে প্রথম স্ল্যাশের পরে কোনও স্থান accidentোকেন তবে ...


1

যেহেতু আমি নিজেই এটি অনুসন্ধান করি তখন এই প্রশ্নটি ক্রমাগত গুগলের শীর্ষে থাকে:

অন্যান্য উত্তরগুলি বিভিন্ন সমস্যায় ভুগছে:

  1. এর মধ্যে কয়েকটি অন্তর্ভুক্ত .এবং ..যা গোলমাল, বিভ্রান্তিকর এবং বিরক্তিকর।

  2. তাদের মধ্যে কিছু লুকানো ফাইলগুলি (বিন্দু দিয়ে শুরু হওয়া ফাইলগুলি) ভুলে যায়।

  3. ডিরেক্টরি মুছে ফেলার অনুমতি দেওয়ার জন্য তারা সঠিক (গভীরতম) প্রথম স্থানে মুছে না।

  4. তারা অন্যান্য (মাউন্ট করা) ফাইল সিস্টেমে অবতরণ করে যা প্রায়শই অনাকাঙ্ক্ষিত থাকে।

  5. অতিরিক্ত প্যারামিটারগুলির সাথে সঠিকভাবে প্রসারিত করা তাদের পক্ষে কঠিন (আরও নীচের অংশে)।

সুতরাং, কোনও ডিরেক্টরিতে সমস্ত ফাইল এবং ফোল্ডারগুলি অনিয়মিতভাবে মুছতে, এটি করুন:

find "${DIR}" -xdev -mindepth 1 -printf "%d\t%y\t%p\0" | sort -z -r -n | cut -z -f3- | xargs -0 -r -- rm -d --

মনে রাখবেন যে আমি -xdevমাউন্টগুলিতে নেমে যাওয়া (যেমন /procইত্যাদি) রোধ করার জন্য একটি যুক্তি যুক্ত করেছি ।

কেন নয় -depthবা -delete?

লোকেরা প্রতিনিয়ত এটির জন্য আমাকে নিম্নচাপ দিয়েছিল, তবুও এই পদ্ধতিগুলির একটি খারাপ দিক রয়েছে: মনে হয় না যে তারা -pruneসাবডিরেক্টরির অনুমতি দেওয়ার জন্য যথেষ্ট পরিমাণে এক্সটেনসিবল (বেশি সমস্যার পরিচয় না দিয়ে)। এই পদ্ধতির বিপরীতে, আপনি সন্নিবেশ করতে পারে

-not \( -path "${DIR}/subdir" -prune \)

-mindepthযুক্তিযুক্ত subdirসামগ্রীটি মুছে ফেলা থেকে বাদ দেওয়ার আগে


এবং গভীরতা-প্রথম অর্ডারের জন্য, এর জন্য একটি -depthপতাকা রয়েছে find
সের্গেই কোলোডিয়াজনি

আ ... কেন শুধু ব্যবহার -deleteসঙ্গেfind ? -deleteগভীরতা প্রথম। আপনি ইতিমধ্যে এর findসাথে নন-পসিক্স ধরে নিয়েছেন -printf, সুতরাং আপনি ঠিক তেমন ব্যবহার করতে পারেন -deleteবা-depth -print0 | xargs -0 rm
মুরু 21:48

@ মুরু: কারণ আমি আরও ভাল জানতাম না ... আমি এটিকে পরিবর্তন করব।
মেহরদাদ

@ মুরু: আসলে মনে হচ্ছে আপনার পদ্ধতিটি দিয়ে কাজ করে না -not \( -path "$DIR/subdir" \)... তবে আমার কি হয়? কেন?
মেহরদাদ

@ মেহরদাদ কী করার কথা?
মারু

0

আপনি cdডিরেক্টরিতে প্রবেশ করতে পারেন এবং তারপরে rm *.*ডস-এর মতো কমান্ডটি চালাতে পারেন যদি আপনি মনে রাখেন।


1
ফাঁকা ডিরেক্টরিগুলির জন্য ডস হ'ল ফাইল এবং আরএমডিআইআর- এবং লুকানো এবং সিস্টেম ফাইলগুলিতে অবশ্যই এটিটিআরআইবি বৈশিষ্ট্যগুলি প্রথমে অপসারণ করা উচিত। প্রায় সহজ নয়;)
এরিক

0

বর্তমান ডিরেক্টরি মুছতে, আপনি উদাহরণস্বরূপ ব্যবহার করতে পারেন rm -d ./*

-d ডিরেক্টরিগুলি মুছে ফেলতেও বলে।

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