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


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.