উত্তর:
যদি আমি আপনাকে সঠিকভাবে বুঝতে পারি তবে আপনি যা করতে চান এটি:
find . -name '*.py' -print0 | xargs -0 grep 'something' > output.txt
Find
এক্সটেনশানের সঙ্গে সব ফাইল py
, grep
শুধুমাত্র সারি যেগুলিতে something
এবং সারি সংরক্ষণ output.txt
। যদি ফাইলটিতে কিছু থাকে তবে এটি প্রতিস্থাপন করা হবে।
সম্পাদনা: এক্সেক্স ব্যবহার করে:
find . -name '*.py' -exec grep 'something' {} \; > output.txt
আমি ক্রিস ডাউনস মন্তব্যটি এখানে যুক্ত করছি। উপরের কমান্ডটি উপস্থিতি grep
হিসাবে যতবার নির্বাহ করা হবে তার ফলস্বরূপ find
। যাইহোক, যদি আপনি প্রতিস্থাপন ;
একটি সঙ্গে +
, grep
থেকে আউটপুট বলা হয় find
ঘনিভূত (আপ একটি নির্দিষ্ট সীমা)। প্রশ্ন দেখতে পাবেন সেমিকোলন ব্যবহার (;) বনাম খুঁজুন Exec সঙ্গে প্লাস (+ +) বিষয় সম্পর্কে আরো জানার জন্য।
grep -H
আপনি যদি আউটপুটে ফাইলের ফাইলের নাম অন্তর্ভুক্ত করতে চান তবে ব্যবহার করুন ।
আপনি যদি সমস্ত ফাইলের মধ্যে সমস্ত মিলে যাওয়া লাইনগুলি সংরক্ষণ করতে চান তবে output.txt
আপনার শেষ কমান্ডটি কাজ করবে, ব্যতীত আপনি ;
কমান্ডের শেষে প্রয়োজনীয়টি মিস করছেন ।
find . -name "*.py" -type f -exec grep "something" {} \; > output.txt
আপনি যদি প্রতিটি রান grep
আলাদা আলাদা ফাইলে আউটপুট তৈরি করতে চান তবে আউটপুট ফাইলের নাম গণনা করার জন্য একটি শেল চালান এবং পুনঃনির্দেশ সম্পাদন করুন।
find . -name "*.py" -type f -exec sh -c 'grep "something" <"$0" >"$0.txt"' {} \;
find . -name "*.py" -type f -exec grep "something" {} \; -print > output.txt
এবং যদি আপনি গ্রেপড রেখার লাইন নম্বর দেখতে চান তবে অবশ্যই আপনি ব্যবহার করতে পারেনgrep -n "something"
ব্যবহার tee
:
find . -name '*.py' | tee output.txt | xargs grep 'something'
সতর্কীকরণ, আপনি (ফাঁকা জায়গা সমেত) বিশেষ অক্ষর কোন ফাইল আছে যদি যে xargs
এবং grep
সাথে ভাল কাজ করবে না ( a file.txt
দুটি ফাইলের হিসেবে ব্যাখ্যা করা হবে, a
এবং file.txt
)। এর বিকল্পটি হ'ল হয় -x
বা ব্যবহার করা -print0
, তবে সেগুলির কোনওটিই আপনার দূষিত করবে output.txt
। -x
ব্যবহার করবে \
নির্দিষ্ট বিশেষ অক্ষর অব্যাহতি এবং এই মধ্যে হতে হবে output.txt
। -print0
একটি ক্ষেত্র বিভাজক হিসেবে নাল বাইট ব্যবহার করবে (এটিও প্রয়োজন xargs -0
) এবং output.txt
লেখার এক দীর্ঘ সংলগ্ন লাইন দেখতে কেমন হবে।
আপনি এর সাথে কীভাবে व्यवहार করেন (বা করবেন না) এটি আপনার উপর নির্ভর করে।
+
পরিবর্তে ব্যবহার করুন\;
, এটি কার্যকরভাবে কার্যকর করার সময়টিকে উল্লেখযোগ্যভাবে উন্নত করবে (যেহেতু এটি কার্যকর হওয়ার আগে পর্যন্ত কার্যনির্বাহী যুক্তিগুলির বিরুদ্ধে তুলনা করেARG_MAX
)।