ডিরেক্টরিগুলি মোছা না করে পুনরুক্তি করে সমস্ত ফাইল সরিয়ে দিন 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.