উত্তর:
আপনি স্ক্যান করতে হবে সব ফাইল এবং প্রথম লাইন পেতে, তারপর প্যাটার্ন জন্য চেক, অবশেষে প্রথম দশ লাইন একটি মুদ্রণ চালানো। এটা সত্যিই ব্যয়বহুল পেতে পারে।
find /path/to/search \
-type f \
-exec /bin/bash -c "head -n 1 '{}' | grep 'PATTERN' >/dev/null" \; \
-exec head -n 10 \{\} \;
দ্য -type f
চালানোর প্রয়োজন হয় না head
ডিরেক্টরি, এবং grep
আমরা তার প্রস্থান অবস্থা আগ্রহী শুধুমাত্র থেকে পুনঃনির্দেশিত হয়। দ্বিতীয় -exec
শুধুমাত্র প্রথম টেস্ট পাস যারা ফাইল চালানো হবে।
আপনি ভাল আগে অতিরিক্ত পরীক্ষা যোগ করার পরামর্শ দেওয়া হবে -type f
, স্ক্যান করা হবে যে ফাইল সংখ্যা কমাতে।
যদি awk
একটি বিকল্প এই চেষ্টা করুন:
find . -type f -exec awk 'NR==1 && /PATTERN/ {x=1} NR>10 {exit} x' {} \;
আপনি নিম্নলিখিত হিসাবে পড়তে পারেন:
প্রথম লাইন PATTERN মেলে তারপর সেট
x
; যদিx
তারপর সেট করুন বর্তমান লাইন প্রিন্ট (অন্তর্নিহিত কর্ম); 10 ম লাইনের পরেই প্রস্থান কর।
টেকনিক্যালি সর্বশেষ অবস্থা হতে হবে !x || NR>10
কিছু CPU চক্র সংরক্ষণ করতে, কিন্তু মূল সংস্করণ নিকার দেখায়। :)
এই দরকারী হতে হবে আশা করি।
grep -R -n "PATTERN" *.* | grep ":1:" | cut -d: -f1 | xargs head -n10
এটি পুনঃক্রমিকভাবে সাব-ডিরেক্টরি সহ কোন ফাইলগুলির জন্য অনুসন্ধান করবে এবং প্রথম লাইনগুলির জন্য ফিল্টার করবে এবং তারপরে সেই ফাইলগুলির জন্য প্রথম 10 টি লাইন মুদ্রণ করবে।