sedके findबजाय के साथ प्रयोग करेंgrep
सबसे पहले, मैं इसके findबजाय grepऔर तीन अच्छे कारणों से काम करूंगा :
findअधिक सटीक फ़ाइल चयन के लिए अनुमति देता है। उदाहरण के लिए, grep -r string *.txtकेवल वर्तमान निर्देशिका में फ़ाइलों का उत्पादन करेगा; उपनिर्देशिकाओं में नहीं।
findशक्तिशाली -execविकल्प के साथ आता है जो पूरे --null … |xargs 0निर्माण की आवश्यकता को समाप्त करता है ।
-readableऔर -writableका विकल्प findफ़ाइलों को पहुँचा नहीं जा सकता पर समय बर्बाद कर पाएगा।
परीक्षण पर कब्जा
उस ने कहा, grepपहले परीक्षण के लिए उधार देता है यह देखने के लिए कि क्या कब्जा किया जाएगा:
$ 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उदाहरण यहां देखे जा सकते हैं ।