প্যারেন্ট ফোল্ডার মোছা ছাড়াই সাবফোল্ডারগুলি মুছুন


15

এই ধরণের কাঠের কাঠামোর জন্য:

/config/filegroups/filegroupA/files/fileA1.txt
/config/filegroups/filegroupA/files/fileA2.txt
/config/filegroups/filegroupB/files/fileB1.txt
/config/filegroups/filegroupB/files/fileB2.txt
...

আমি জানি যে আমি rm -rf /config/filesgroupsপ্যারেন্ট ফোল্ডার এবং সমস্ত উপ-ফোল্ডার মুছতে ব্যবহার করতে পারি ...

কিন্তু আমি শুধুমাত্র মুছে ফেলতে চান /filegroupA, /filegroupBইত্যাদি এবং মুছে ফেলতে পারবেন না/config/filegroups


13
আরএম-আরএফ / কনফিগারেশন / ফাইলগ্রুপ / * ব্যবহার করতে সমস্যা আছে কি?
dsmsk80

3
নাও হতে পারে rm -rf /config/filegroups/filegroups{A,B}?
ড্র স্লোয়ান

@dsumsky ডিফল্টরূপে bash'' অন্তর্ভুক্ত করে না। পথের নাম সম্প্রসারণে ফোল্ডারগুলি। যা কাঙ্ক্ষিত বা নাও হতে পারে। নিজেকে আমি কি shopt -s dotglobমধ্যে .bashrcএটি ঠিক করতে। কেবলমাত্র একটি পার্শ্ব নোট যাতে কারওর পক্ষে দরকারী হতে পারে;)।
মিরোস্লাভ কোকিকার

আপনার জন্য কোন হে কাজ করেছে? যদি তা হয়, তবে অন্যেরা (আমাকে পছন্দ করুন) যারা একই কাজ করতে চান তাদের সহায়তা করার জন্য, আপনি কি কোনও উত্তর গ্রহণ করতে আপত্তি করবেন?
মাওগ বলছেন মনিকা

rm -rf /*করবে;) --- গুরুত্ব সহকারে এটি করবেন না
মুহাম্মদ উমর

উত্তর:


28
rm -rf /config/filegroups/*

যদি আপনি কেবল কোনও ডিরেক্টরি (এবং ডিরেক্টরিগুলিতে প্রতিলিঙ্ক) মুছতে চান তবে যে কোনও ফাইল /config/filegroupsঅপরিবর্তিত রেখে আপনি ট্রিলিং স্ল্যাশ ব্যবহার করতে পারেন:

rm -rf /config/filegroups/*/

আপনার যদি .মোটামুটি সাম্প্রতিক ব্যাশ রয়েছে বলে ধরে নিয়ে আপনি নামের শুরুতে ডিরেক্টরিগুলি মুছতে চান তবে আপনার ডটগ্লোব শেল বিকল্পটি ব্যবহার করা উচিত:

shopt -s dotglob
rm -rf /config/filegroups/*/
shopt -u dotglob

এবং দয়া করে এটি ব্যবহার করবেন না যে এটি আরএম-আরএফ "/ কনফিগারেশন / ফাইলগোষ্ঠী / *" এর জন্য কাজ করবে না
ইলিয়া ইয়েভল্যাম্পিভ

5

এটি /config/filegroups"লুকানো" ফাইল এবং ডিরেক্টরিগুলি (নাম দিয়ে শুরু হওয়া .) সহ সমস্ত ফাইল এবং ডিরেক্টরি মুছবে ।

find /config/filegroups -mindepth 1 -maxdepth 1 | xargs rm -rf

যদি ফাইল বা ডিরেক্টরিগুলির নামগুলিতে স্পেস থাকে তবে আপনাকে এটি এইভাবে করতে হবে:

find /config/filegroups -mindepth 1 -maxdepth 1 -print0 | xargs -0 rm -rf

বোনাস: আপনি প্রথমে এটি কীভাবে মুছতে চলেছে তা পরীক্ষা করতে পারেন:

find /config/filegroups -mindepth 1 -maxdepth 1

আপনি যদি কিছু ফাইল বা ডিরেক্টরি রাখতে চান তবে আপনি এটি এইভাবে করতে পারেন:

find /config/filegroups -mindepth 1 -maxdepth 1 -not -name "keep"

findএর -deleteবিকল্পটি ব্যবহার না করার কোনও কারণ আছে কি ?
অশুভ

4
-deleteখালি ডিরেক্টরি না মুছে ফেলা অস্বীকার করে। -maxdepthওভাররাইডগুলি -depthযা -deleteখালি অ ডাইরেক্টরিগুলি মুছতে প্রয়োজন । ছাড়া -maxdepthআপনি সহজেই দেখতে পায় না যা ডিরেক্টরি মুছে ফেলা হবে কারণ এটি ডিরেক্টরি ভিতরে ফাইলগুলোর সূচী যাচ্ছি। ব্যবহার না করার -maxdepthঅর্থ আপনি সহজেই ফিল্টার ব্যবহার করতে পারবেন না -name। তদ্ব্যতীত -deleteডিরেক্টরিগুলির মধ্যে প্রথমে সমস্ত বস্তু মোছার মাধ্যমে মুছে ফেলা হয়, এটি বড় এবং গভীর গাছ হলে অনেক সময় নিতে পারে time
লেসমানা

4

আমি এর findসাথে ব্যবহার করতে পছন্দ করি -exec, এটি আপনার কলকে কিছুটা এমন করবে:

find /config/filegroups/ -maxdepth 1 -mindepth 1 -type d -exec rm -rf {} \;

-2

আপনি যদি ইতিমধ্যে ফোল্ডারে থাকেন তবে আপনি কেবল টাইপ করতে পারেন rm -rf ./**

তাই:

cd /config/filesgroups
rm -rf ./**

স্থানীয় পথ থেকে সমস্ত সাবফোল্ডার মুছে ফেলার জন্য এটি একটি গ্লোব প্যাটার্ন ..

./স্থানীয় ফোল্ডারটি উল্লেখ করা হচ্ছে ... এবং **নীচে সমস্ত ফোল্ডারগুলির জন্য ..


1
কোন ফোল্ডার, এবং কেন `**` `
রালফফ্রিডেল

1
এটি হুবহু একই রকম হবে rm -rf ./*, আপনি যদি -fআপনার কমান্ড ব্যবহার না করেন তবে "এই জাতীয় কোনও ফাইল বা ডিরেক্টরি নেই" সম্পর্কে ডায়গনিস্টিক বার্তা পাওয়ার সম্ভাবনা রয়েছে (যেহেতু শীর্ষস্থানীয় ডিরেক্টরিটি এর সামগ্রীগুলি প্রক্রিয়া করার আগেই পুনরাবৃত্তভাবে মুছে ফেলা হবে দ্বারা rm)।
কুসালানন্দ
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.