উত্তর:
সর্বাধিক সরল সমাধান হ'ল সমস্ত ফাইলকে একত্রিত করা এবং ফলাফলটি আপনার স্ক্রিপ্টে পাইপ করা:
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
বর্তমান ডিরেক্টরিতে কেবল ফাইলগুলি মেলে ।
এবং, @ জি-ম্যান যেমন তাঁর মন্তব্যে বলেছিলেন, *
লুকানো ফাইলগুলির সাথে মেলে না (বিন্দু দিয়ে শুরু)। আপনি যদি এটি চান, ব্যবহার করুন * .*
।
আপনি যদি জিএনইউ অ্যাডকের সাথে ফাইলের জন্য সর্বোচ্চ দৈর্ঘ্য চান:
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 খালি লাইন থাকে, সুতরাং দীর্ঘতম রেখাটি থাকবে না।
জিএনইউ ডাব্লুসিসি (কোর্টিলস ৮.৪) এর সাহায্যে এটি একাধিক ফাইল পরিচালনা করতে পারে
wc -L *.txt
wc -L
করে মূলত এটিই করে তবে আপনার সমাধানটির অসুবিধা রয়েছে যা আপনাকে প্রথমে অন্যান্য সমস্ত ফাইলের সর্বাধিক দৈর্ঘ্যের মধ্যে ফেলে দিতে হয়। এতে কোনও লাভ আছে কি?
cat * .* | ...
,। অথবা বিড়ালের অকেজো ব্যবহার বাদ দিয়ে বলুনawk '...' * .*
।