জিএনইউ, বা ফ্রিবিএসডি বা নেটবিএসডি বা ওপেনবিএসডি (এবং সম্ভাব্য অন্যরা) সহ awk:
find . -type f -exec awk '
/^#!.*python/{print FILENAME}
{nextfile}' {} +
প্রতিটি ফাইলের প্রথম লাইনে তাকান এবং awkপ্রয়োজনীয় হিসাবে কয়েকটি চালিত হবে ।
nextfileবিবৃতিতে উপরে মান নয় বরং গনুহ এক (যা সম্ভবত এটা কোথা থেকে সম্ভূত) সহ কয়েকটি বাস্তবায়নের পাওয়া যায়।
উপরের কোডটি অন্য প্রয়োগেও কাজ করবে বলে মনে হচ্ছে, nextfileবিবৃতিটি সেখানে কিছুই করবে না (কোনও আনসেট nextfileভেরিয়েবল সমন্বিত একটি এক্সপ্রেশন হিসাবে স্বীকৃত হবে ), যার অর্থ এই হবে যে সমস্ত ফাইল পুরোপুরি পঠিত হবে এবং ফাইলটির নাম হবে প্রতিটি ম্যাচিং লাইনের জন্য মুদ্রণ করা হবে।
আপনার যদি awkসমর্থন FNR(POSIX awks মত কিন্তু মূল না awk, তাই সোলারিস উপর /usr/xpg4/bin/awkএবং /usr/bin/awkএবং) nextfile, আপনি এটি লিখতে পারেন:
find . -type f -exec awk 'FNR == 1 && /^#!.*python/{print FILENAME}' {} +
যা এখনও যতগুলি awkসম্ভব সংখ্যক চলতে পারে তবে ফাইলগুলি পুরোপুরি পড়তে পারে।
ফাইলগুলি পুরোপুরি পড়া এড়ানোর জন্য আরেকটি বিকল্প এবং এটি প্রত্যেকের সাথে কাজ করবে awkএবং findতার অর্থ awkপ্রতি ফাইলের জন্য একটি চালানো হবে:
find . -type f -exec awk '
/^#!.*python/{r=1};{exit}
END {exit(1-r)}' {} \; -print
grep -lকোনও ফাইল মিল পাওয়া মাত্রই এটি পড়া বন্ধ করে দেবে, কোনও মিল নেই এমন ফাইলগুলির জন্য এটি পুরো ফাইলটি পড়বে। এটি ফাইলগুলির মাঝখানে মিলও খুঁজে পেতে পারে, সুতরাং এটি উদাহরণস্বরূপsharপাইথন স্ক্রিপ্টগুলি ধারণ করে এমন কোনও ফাইলে মিলতে পারে ।