পরিবর্তে sed
সঙ্গে ব্যবহার করুনfind
grep
প্রথমত, আমি find
বরং কর্মসংস্থান করব grep
, এবং এটি তিনটি ভাল কারণে:
find
আরও সুনির্দিষ্ট ফাইল নির্বাচনের জন্য অনুমতি দেয়। উদাহরণস্বরূপ, grep -r string *.txt
কেবলমাত্র বর্তমান ডিরেক্টরিতে ফাইলগুলি পাওয়া যাবে; উপ-ডিরেক্টরিগুলিতে নয়।
find
শক্তিশালী -exec
বিকল্পের সাথে আসে যা পুরো --null … |xargs 0
নির্মাণের প্রয়োজনকে সরিয়ে দেয়।
- এর
-readable
এবং -writable
অপশনগুলি find
অ্যাক্সেস করা যায় না এমন ফাইলগুলিতে সময় অপচয় করা রোধ করবে।
ক্যাপচার পরীক্ষা
এটি বলেছিল, grep
কী ধরা পড়বে তা দেখার জন্য প্রথম পরীক্ষার জন্য নিজেকে ndণ দেয়:
$ find . -exec grep term1 {} \;
বা আরও নির্দিষ্টভাবে:
$ find . -type f -name '*.txt' -readable -writable -exec grep term1 {} \;
শুকনো রান
এখন, একটি sed
শুকনো রান নিয়ে এগিয়ে যান । sed
বিকল্প -n
জন্য একটি প্রতিশব্দ হয় --quiet
এবং p
খুব শেষে sed
অভিব্যক্তি বর্তমান প্যাটার্ন স্থান প্রিন্ট করবে।
$ find . -exec sed -n 's/term1/term2/gp' {} \;
বা আরও নির্দিষ্টভাবে:
$ find . -type f -name '*.txt' -readable -writable -exec sed -n 's/term1/term2/gp' {} \;
ফাঁসি
সবকিছু ঠিক বলে মনে হলে, প্রতিস্থাপন ডেফিনিটিভ কমান্ড sed
বিকল্প -n
দ্বারা -i
"জায়গায়" জন্য এবং সরিয়ে p
শেষে।
$ find . -exec sed -i 's/term1/term2/g' {} \;
বা আরও নির্দিষ্টভাবে:
$ find . -type f -name '*.txt' -readable -writable -exec sed -i 's/term1/term2/g' {} \;
আরও find
উদাহরণ
আরও find
উদাহরণ এখানে পাওয়া যাবে ।