2011-12-21 13 views
14

की जगह मैं कैसे खोल का उपयोग कर एक फ़ोल्डर की सभी फाइलों पर "abcd" साथ "abc" जगह ले सकता है?लिनक्स खोजने के लिए और

यह sed आदेश का उपयोग संभव है?

+1

हाँ, यह संभव है। आदमी पृष्ठ का अन्वेषण करें .... –

+0

हालांकि – fge

+0

@fge, वहाँ उस के लिए एक आदमी पेज है और साथ ही @ Vikram.exe आदमी पेज sed regexes बारे में कुछ भी स्पष्ट नहीं होता :) या जाँच: http: // linux। die.net/man/7/regex –

उत्तर

35

फ़ाइल file.txt के लिए निम्न आदेश का प्रयास करें: वर्तमान निर्देशिका में

find . -maxdepth 1 -type f -exec sed -i 's/abc/abcd/g' {} \; 

फ़ाइलों के लिए:

sed -i 's/abc/abcd/g' file.txt 


वर्तमान फ़ोल्डर में सभी फ़ाइलों के लिए निम्न आदेश का प्रयास करें और सभी उपनिर्देशिकाएं:

find . -type f -exec sed -i 's/abc/abcd/g' {} \; 

या यदि आप xargs की प्रशंसक हैं:

find . -type f | xargs -I {} sed -i 's/abc/abcd/g' {} 
+0

मैं एक फ़ोल्डर में सभी फ़ाइलें के लिए इसकी आवश्यकता, एकल फाइल –

+0

चेकआउट मेरे संपादन के लिए नहीं;) – kbdjockey

+1

खोजने के लिए +1। क्योंकि अगर डीआईआर में उपदिर है, तो उन sed ... * समाधान विफल हो जाएंगे। – Kent

1
sed -i 's/abc/&d/g' * 

काम करना चाहिए।

+0

यह भी '0abcd', का स्थान ले लेगा' abcd' आदि – fge

+0

हाँ, सवाल ही एबीसी को बदलने के लिए कहा गया है। "पूरे शब्द" के बारे में कोई संकेत नहीं। – Nikodemus

0

हाँ:

find /the/folder -type f -exec sed -i 's,\<abc\>,&d,g' {} \; 
संबंधित मुद्दे