GNU sed के साथ:
find . -type f -print0 | xargs -0 sed -i /KeyWord/d
OSX sed के साथ:
find . -type f -print0 | xargs -0 sed -i '' /KeyWord/d
पहले कमांड find
सभी मानक फाइलों को ढूँढता है (निर्देशिका नहीं, या पाइप, या आदि), उन्हें अलग करके प्रिंट करता है \0
(ताकि फ़ाइलनाम में रिक्त स्थान, नई सूची आदि हो सकते हैं)।
दूसरा कमांड xargs
आउटपुट को पढ़ता है find
, एक विभाजक के आधार पर एक सूची को पकड़ता है ( \0
क्योंकि -0
), sed -i [...]
सूची से जोड़े गए मापदंडों के साथ आह्वान करता है ( sed
यदि कई फाइलें हैं तो कई बार कहा जाएगा, क्योंकि मापदंडों की अधिकतम लंबाई सीमित है प्रत्येक आह्वान)।
sed
यथा-स्थान आदेश संशोधित ( -i
)।
जैसा कि /KeyWord/d
, यह नियमित अभिव्यक्ति वाले लाइनों को हटा देगा KeyWord
।
आपको sed
सरल (सरल लेकिन असामान्य) सिंटैक्स को अच्छी तरह से समझना सीखना चाहिए , और यहां शामिल टूल के बारे में अधिक जानकारी के लिए उपयुक्त मैनपेज़ का उल्लेख करना चाहिए।
और जैसा कि मैं बढ़ावा देना चाहता हूं zsh
, इसके विस्तारित ग्लब्स के साथ समाधान:
sed -i /KeyWord/d **/*(.)