কেবলমাত্র এক ধরণের ফাইল রয়েছে এমন সমস্ত ডিরেক্টরি সন্ধান করুন


-1

.Txt ফাইল টাইপ দেওয়া আছে, কেবলমাত্র সেই ধরণের ফাইল রয়েছে এমন সমস্ত ডিরেক্টরি সন্ধান করুন।

উদাহরণ স্বরূপ

a--
   b-- 1.txt
   c--
      |
       ---- 2.jpg
       ---- 3.txt

কমান্ডটি কেবল আউটপুট করা উচিত bনয় c


দয়া করে একটি ওএস ট্যাগ যুক্ত করুন। লিনাক্সের জন্য: আমি সম্ভবত চালাতে পারতাম find, প্রার্থী ডিরেক্টরিগুলি অন্তত এই ধরণের ফাইল ধারণ করে এবং "কেবলমাত্র" শর্ত পরীক্ষা করে এমন স্ক্রিপ্টের মাধ্যমে আউটপুট পোস্ট-প্রক্রিয়া করি।
ডিসেম্বর

উত্তর:


1
find . -type d -execdir sh -c '
   [ "$(find "$1" -maxdepth 1 -type f -name "*.txt" -print -quit | wc -l)" -gt 0 ] &&
   [ "$(find "$1" -maxdepth 1 -type f ! -name "*.txt" -print -quit | wc -l)" -eq 0 ]
   ' find-sh {} \; -print

বাইরের findসরবরাহের ডিরেক্টরিগুলি পরীক্ষা করতে হবে। দুই ভেতরের find-s পরীক্ষা আছে যদি কমপক্ষে একটি .txtফাইল এবং কোন অ .txtডিরেক্টরির মধ্যে ফাইল। shশেল [ … ]এবং সঙ্গে যুক্তি প্রয়োগ করে &&

নোট:

  • -maxdepthপসিক্স দ্বারা প্রয়োজন হয় না। পসিক্স পদ্ধতির জন্য এই প্রশ্নটি দেখুন
  • -quitপসিক্স দ্বারা প্রয়োজন হয় না। findযেকোন মিলে যাওয়া ফাইলের প্রতিবেদন হওয়ার সাথে সাথে এই ক্রিয়াটি প্রস্থান করে। এটি কার্যকর কারণ ফলাফলটি পেতে আমাদের বেশিরভাগ একটি মিলে যাওয়া ফাইলের প্রয়োজন wc -lএবং [ … ]তাই তাড়াতাড়ি ছাড়তে সময় সাশ্রয় হয়। -quitপুরো কমান্ডটি ছাড়া কাজ করবে না, যখন অনেক ফাইল থাকবে তখন এটি ধীর হবে। বিকল্পভাবে আপনি ব্যবহার করতে পারেন find … | head -n 1 | wc -l; এই ক্ষেত্রে headপাইপটি প্রথম ফাইলটি সন্ধানের পরে বন্ধ করে wcদেবে, এখনই ফলাফলটি findদেবে , তবে কেবলমাত্র (যদি) এটি অন্য একটি লাইন লেখার চেষ্টা করবে তখন ভাঙা পাইপটি লক্ষ্য করবে । এবং এটি একটি বাণিজ্য বন্ধ: headআপনার কিছু সময় এবং সংস্থান সাশ্রয় করতে পারে তবে (পৃথক প্রক্রিয়া হিসাবে) প্রতিটি ডিরেক্টরিতে দু'বার স্প্যান করার জন্য সময় এবং সংস্থান প্রয়োজন।
  • নিউলাইনযুক্ত পাথগুলি (যদি থাকে) বোকা বানাবে wc -lতবে তাতে কিছু আসে যায় না কারণ এই অতিরিক্ত নতুনলাইনগুলি কেবল "ডান" গণনাটি শূন্য নয় তবেই কেবল ফলাফলটি শূন্য কিনা তা আমাদের জানতে হবে the ।
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.