Odd Sed Error Message -
bash-3.2 $ sed -i.bakkk -e "s # / sa / # / he / # g "।: Sed:। इन-प्लेस एडिटिंग केवल नियमित फाइलों के लिए ही काम करता है
मैं किसी फ़ोल्डर में प्रत्येक डॉट-फाइल में हर / सा / के साथ / उसको बदलने की कोशिश करता हूं। मैं इसे कैसे काम कर सकता हूं?
ढूंढने के लिए ढूंढें टाइप करें
केवल फ़ाइलें नाम । *
से मेल खाते और निर्देशिका ।
और ..
को बाहर करें। -मेक्सडेप 1
रोकता है ढूंढें
उपनिर्देशिका में पुनरावर्ती से।
का उपयोग करके ढूंढें
कहने के लिए sed
कमांड को चलाने के लिए आप -exec
कमांड का उपयोग कर सकते हैं। फ़ाइल नाम जाना चाहिए।
ढूंढें -प्रकार f -maxdepth 1 -name '। *' -exec sed -i.bakkk -e "s # / sa / # / he / # g" {} +
का उपयोग कर < कोड> -एक्सएसी बैकटीक्स या xargs
का उपयोग करने के लिए बेहतर है क्योंकि यह अजीब फ़ाइल नामों पर भी काम करेगा जो कि रिक्त स्थान या यहां तक कि नई लाइनों के साथ भी काम करता है & mdash; हाँ, "foo bar \ nfile" / कोड> मान्य फ़ाइल नाम है एक माननीय उल्लेख
को मिल जाता है -print0 | Xargs -0
ढूंढें -प्रकार f -maxdepth 1 -name '। *' -print0 | Xargs -0 sed -i.bakkk -e "s # / sa / # / he / # g"
जो समान रूप से सुरक्षित है I यह थोड़ा और अधिक शब्दशः है, हालांकि, और कम लचीला है क्योंकि यह केवल उन कमांडों के लिए काम करता है जहां फाइल नाम अंत में जाते हैं (अर्थात, उनमें से 99%)।
Comments
Post a Comment