উত্তর:
যদি আমি আপনাকে সঠিকভাবে বুঝতে পারি তবে আপনি যা করতে চান এটি:
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)।