পরিবর্তে sedসঙ্গে ব্যবহার করুনfindgrep
প্রথমত, আমি 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উদাহরণ এখানে পাওয়া যাবে ।