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


10

আমি সাবডিরেক্টরিজের সমস্ত ফাইল সহ একটি ডিরেক্টরি সমস্ত ফাইলকে "ক্লিন আউট" করতে চাই তবে আমি সাব-ডিরেক্টরিগুলি স্থানে রেখে যেতে চাই। আমার বোঝার বিষয়টি rm -rহ'ল এটি নিজেরাই উপ-ডিরেক্টরিগুলিও মুছবে।

আমি লুকানো (ডট) ফাইল মুছতে চাই না ।

কিভাবে এই কাজ করা যেতে পারে?


1
find -type f ! -name "[.]*" -deleteউপযুক্ত নয়?
— কস্টাস

আমি জানি না। আমি যা বলছি তা কি তাই করে?
— স্কট উইল্টন

ছাড়াই চেষ্টা করুন -delete- এটি মুছতে কেবল ফাইলের নাম মুদ্রণ করে।
— কস্টাস

আপনি কি গোপন ডিরেক্টরিতে ফাইল (লুকানো বা না) মুছতে চান?
— স্টাফেন চেজেলাস

ডিরেক্টরিতে প্রতিলিঙ্ক সম্পর্কে কি?
— স্টাফেন চেজেলাস

উত্তর:


10

তার findজন্য ব্যবহার করুন :

find . ! -name '.*' ! -type d -exec rm -- {} +

1
নেই সব খোঁজ বাস্তবায়নের আছে-delete
— wurtel

3
@ রোমিওনোভ দয়া করে ওপি প্রশ্নটি পড়ুন:I do not want to delete hidden (dot) files.
— জিম্মিজ

1
@ কাস্টাস, না, এমন কোনও শেল নেই যাতে পালাতে হবে +(কমপক্ষে বোর্ন, সিএসএস বা আরসি পরিবারগুলিতে নয়)। একটি কিংবদন্তি আছে যেটি বলেছে যে কিছু পুরানো সংস্করণগুলি cshপালানোর দরকার ছিল {}তবে আমি কখনই সেগুলি পাই নি।
— স্টাফেন চেজেলাস

1
@ স্কটউইলটন হিডেন ডিরেক্টরি অন্তর্ভুক্ত করা হয়েছে, তবে লুকানো ফাইলগুলি লুকানো ডিরেক্টরিতে নেই। আপনি যদি গোপন ডিরেক্টরিতে সমস্ত ফাইল প্রত্যাখ্যান করতে চান find . ! -name '.*' ! -type d ! -path '*/.*'তবে কাজটি করা উচিত।
— জিম্মিজ

1
@ জিমি, আরও find . -name '.?*' -prune -o ! -type d -exec rm {} +সম্পূর্ণরূপে তাদের অবতরণ এড়াতে পছন্দ করেন। নোটগুলি --এখানে প্রয়োজনীয় নয় (যেহেতু কোনও ক্ষতি করে না) যেহেতু পথগুলি শুরু হয় ./।
— স্টাফেন চেজেলাস

0

এরকম কিছু চেষ্টা করুন:

find <path> ! -name '.*' -type f -exec rm {} \;

কোনও কারণেই দ্রুত গতি বাড়ানোর পরিবর্তে ফাইলগুলি একবারে সরিয়ে ফেলতে হবে কেন .... -exec rm {} + ?
— অ্যান্থন

আমি এক এক করে জিনিস করতে পছন্দ করি। গণ (এবং সমান্তরাল) অপারেশনগুলির কিছুটা সময় অদ্ভুত (এবং অপ্রীতিকর) পার্শ্ব প্রতিক্রিয়া রয়েছে (যেমন I / O সাবসিস্টেমটিতে বিশাল বোঝা তৈরি করে)
— রোমিও নিনভ

1
-exec rm {} +সমান্তরাল নয়, এটি rmবেশ কয়েকটি ফাইলের নাম সহ কল করে । এটি কম rmনিমন্ত্রণ চালায় তাই আরও সংস্থান-বান্ধব। যদি এটি সামান্য কম সুরক্ষিত হয় তবে এটি রেস উইন্ডোকে বাড়িয়ে দেয় যার মধ্যে ফাইলগুলির ডিরেক্টরি উপাদান সরানোর জন্য একটি ডিরেক্টরি উপাদানকে একটি সিমিলিংকে পরিবর্তন করা যেতে পারে। তবে কেবল -deleteবা -execdir rm {} \;সম্পূর্ণরূপে এটিকে সম্বোধন করবে।
— স্টাফেন চেজেলাস

@ স্টাফেনচাজেলা, ইউএনএক্স-এ (-সিলিট বা-এক্সেকডির) বিহীন এবং আমি লিনাক্স উল্লেখ করা প্রশ্নে দেখতে পাচ্ছি না!
— রোমিও নিনভ

@ রোমিওভিনভ, হ্যাঁ আমি এখানে অন্য একটি মন্তব্যে বলেছি যে কেবলমাত্র -execমানসম্পন্ন। -deleteএবং -execdirবিএসডি থেকে আসা, জিএনইউ তাদের প্রায় 10 বছর পরে যুক্ত করেছে। যাই হোক না কেন, লিনাক্সের সাথে এর কোনও সম্পর্ক নেই, এটি কেবল একটি কার্নেল।
— স্টাফেন চেজেলাস
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.