কীভাবে ফাইলের নাম এবং রেখা নম্বরগুলি ফাইন্ডের সাথে ফিরিয়ে আনবেন…?


45

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

ফাইলের নাম: find . -type f -exec grep -l 'string to search' {} \;

লাইন নম্বর: find . -type f -exec grep -n 'string to search' {} \;

উত্তর:


51

কমান্ড লাইন স্যুইচ কেবল একটি ফাইল সহ ফাইলের নাম মুদ্রণ করতে -Hবাধ্য grepকরে।

% grep -n 7 test.in
7:7
% grep -Hn 7 test.in
test.in:7:7

   -H, --with-filename
          Print the filename for each match.

উল্লেখ্য, কোজিরো যেমন একটি মন্তব্যে বলেছেন , এটি পসিক্স স্ট্যান্ডার্ডের অংশ নয়; এটি জিএনইউ এবং বিএসডি গ্রেপ উভয় ক্ষেত্রেই রয়েছে তবে কিছু সিস্টেমে এটি না থাকার সম্ভাবনা রয়েছে (যেমন সোলারিস)।


4
এই উত্তরটি যে ইশারা দ্বারা উন্নত করা যেতে পারে -Hপতাকা grepএকটি হল নন-স্ট্যান্ডার্ড গনুহ এক্সটেনশন এবং অ গনুহ সিস্টেমের জন্য একটি বিকল্প পদ্ধতিতে অঙ্গবিন্যাস।
কোজিরো

22
find . -type f -exec grep -n 'string to search' /dev/null {} +

(বা জিএনইউ গ্রেপ সহ, -Hবিকল্পটি দেখুন)


এবং + এইচ উভয়ই দুর্দান্ত কাজ করে, আপনাকে ধন্যবাদ!
ড্যানি_জরিস 21

এবং এই উত্তরের সাথে সম্পর্কিত: unix.stackexchange.com
ড্যানি_জরিস

4
+1 ঠিক আছে, কারণ grepএকাধিক ফাইলনাম আরগ থাকার কারণে এটি মিলে যাওয়া ফাইলের নামগুলি আউটপুট করতে বাধ্য করবে। চতুর!
কোজিরো

-1

যদি আপনার গ্রেপ পুনরাবৃত্ত -rপতাকাটিকে সমর্থন করে তবে এটি আপনার অনুরোধটি সমাধান করে:

grep -rn "String to search " * 

1
এটি সত্য, তবে এটি বিদ্যমান উত্তরগুলিতে কী যুক্ত করে তা আমি দেখতে পাচ্ছি না।
ওয়াইল্ডকার্ড

এবং যদি বর্তমান ডিরেক্টরিতে কেবল একটি (নন-ডট) ফাইল থাকে তবে এটি ফাইলটির নাম প্রদর্শন করে না।
জি-ম্যান
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.