2010-11-03 7 views
28

की सभी फ़ाइलों में पाठ को खोजें और बदलें, मेरे पास एक वेबसाइट निर्देशिका है जहां मुझे एक डोमेन से दूसरे डोमेन में सभी हार्डकोड किए गए लिंक बदलने की आवश्यकता है। एक सिंगल (grep? Sed?) Bash कमांड की तलाश है जो मुझे निर्देशिका में सभी फ़ाइलों में पाठ की सभी घटनाओं को बदलने की अनुमति देगा?लिनक्स निर्देशिका

उत्तर

47

निम्नलिखित यह करना होगा:

sed -i 's/old_link/new_link/g' file... 

मत भूलना एक बैकस्लैश के साथ किसी भी स्लैश, डॉट्स, और लिंक के पते में किसी भी अन्य regex विशेष वर्ण से बचने के लिए।

+1

@ Goldshteyn- आप आदमी, धन्यवाद – Yarin

+7

आप अपने 'sed' आदेश वैकल्पिक सीमांककों का उपयोग कुछ एस्केपिंग करने के लिए होने से बचाने के कर सकते हैं:' sed मैं की | वर्ष/के साथ/slashes | नया/साथ/slashes/g'' –

+0

मुझे लगता है कि आप का मतलब है: पुराना/साथ/slashes | नया/साथ/slashes | जी'। हां, आप ऐसे चरित्र का उपयोग कर सकते हैं जो फ़ाइल नाम में मान्य नहीं होगा, लेकिन बचने के पात्रों से बचने के लिए, रेडक्स को सीमित करने के लिए sed द्वारा उपयोग किया जा सकता है। –

2

इसके अलावा, कोशिश:

perl -p -i -e <regex> <folder> 
संबंधित मुद्दे