ডিরেক্টরিতে সমস্ত পাঠ্য ফাইলে দীর্ঘতম লাইনের দৈর্ঘ্য সন্ধান করুন


16

আমি জানি যে কীভাবে একটি টেক্সট ফাইলে দীর্ঘতম লাইনের দৈর্ঘ্য পেতে হয় awk

awk ' { if ( length > L ) { L=length} }END{ print L}' file.txt

তবে আমি কীভাবে একটি ডিরেক্টরিতে সমস্ত ফাইলের দীর্ঘতম লাইনের দৈর্ঘ্য পেতে পারি?

উত্তর:


11

সর্বাধিক সরল সমাধান হ'ল সমস্ত ফাইলকে একত্রিত করা এবং ফলাফলটি আপনার স্ক্রিপ্টে পাইপ করা:

cat ./* | awk '{ if ( length > L ) { L=length} }END{ print L}'

আপনি প্রত্যাহার করতে সরাসরি বেশ কয়েকটি ফাইল পাস করতে পারেন:

awk '{ if ( length > L ) { L=length} }END{ print L}' ./*

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

 awk '{ if ( length > L ) { L=length} }END{ print L}' ./*.txt

.txtবর্তমান ডিরেক্টরিতে কেবল ফাইলগুলি মেলে ।

এবং, @ জি-ম্যান যেমন তাঁর মন্তব্যে বলেছিলেন, *লুকানো ফাইলগুলির সাথে মেলে না (বিন্দু দিয়ে শুরু)। আপনি যদি এটি চান, ব্যবহার করুন * .*


বা, যুক্তিযুক্ত cat * .* | ...,। অথবা বিড়ালের অকেজো ব্যবহার বাদ দিয়ে বলুন awk '...' * .*
জি-ম্যান বলছেন 'পুনরায় ইনস্টল করুন মনিকা'

@ জি-ম্যান প্রকৃতপক্ষে। আপনি যখন মন্তব্য করেছিলেন আমি সে সম্পর্কে আমার উত্তরটি সম্পাদনা করছি। :-) আমি সবচেয়ে সোজা বলেছি কারণ বিড়ালের সাথে ফাইলগুলিকে একত্রিত করা প্রথমে সহজ মনে হয়েছিল।
দীর্ঘ

4

জিএনইউ সহ wc:

cat *.txt|wc -L

-L দীর্ঘতম লাইনের দৈর্ঘ্য মুদ্রণ করে।


4

আপনি যদি জিএনইউ অ্যাডকের সাথে ফাইলের জন্য সর্বোচ্চ দৈর্ঘ্য চান:

find . -type f -exec awk -v l=0 '
   length>l {l=length} ENDFILE{print FILENAME ":", l; l=0}' {} +

বা সমস্ত ফাইলের এক সর্বাধিক দৈর্ঘ্য:

find . -type f -size +1c -exec cat {} + |
  awk -v l=0 'length>l {l=length}; END{print l}'

এটি ফাইলগুলিকে নতুন লাইনের অক্ষরে শেষ বলে ধরে নিয়েছে। যদি একটি ফাইল একটি নতুন লাইনের অক্ষরে শেষ না হয়, তবে এর শেষ অ-সীমিত না করা লাইনটি পরবর্তী ফাইলের প্রথম লাইনের সাথে একীভূত হবে এবং সম্ভবত আপনার ফলাফল অকার্যকর করবে।

-size +1c পাঠ্য ফাইল হিসাবে একটি অপ্টিমাইজেশন যা খালি বা কেবলমাত্র একটি অক্ষর ধারণ করে যথাক্রমে 0 লাইন এবং 1 খালি লাইন থাকে, সুতরাং দীর্ঘতম রেখাটি থাকবে না।


এগুলি পাঠ্য ফাইল, তাই এগুলি নতুন লাইনের অক্ষরে শেষ হয় (খালি ব্যতীত)।
গিলস 'অশুভ হওয়া বন্ধ করুন'

0

জিএনইউ ডাব্লুসিসি (কোর্টিলস ৮.৪) এর সাহায্যে এটি একাধিক ফাইল পরিচালনা করতে পারে

wc -L *.txt
  • প্রতিটি স্বতন্ত্র ফাইলের দৈর্ঘ্য তালিকাভুক্ত করে
  • পাশাপাশি সমস্ত ফাইলের দীর্ঘতম দৈর্ঘ্য সরবরাহ করুন

এটি অন্যান্য উত্তরটি উল্লেখ wc -Lকরে মূলত এটিই করে তবে আপনার সমাধানটির অসুবিধা রয়েছে যা আপনাকে প্রথমে অন্যান্য সমস্ত ফাইলের সর্বাধিক দৈর্ঘ্যের মধ্যে ফেলে দিতে হয়। এতে কোনও লাভ আছে কি?
অ্যান্থন
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.