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

Popular posts from this blog

c# - ListView onScroll event -

PHP - get image from byte array -

Linux Terminal Problem with Non-Canonical Terminal I/O app -