ابحث واستبدالها في ملفات متعددة عند سطر الأوامر
-
19-09-2019 - |
سؤال
كيف يمكنني العثور على سلسلة أو استبدال سلسلة الأوامر في ملفات متعددة على UNIX؟
المحلول
هناك العديد من الطرق. ولكن واحدة من الإجابات سيكون:
find . -name '*.html' |xargs perl -pi -e 's/find/replace/g'
نصائح أخرى
مثل محلول غيبوبة (وأسرع أفترض) ولكن مع سيد (قياسي في العديد من Distros و OSX) بدلا من بيرل:
find . -name '*.py' | xargs sed -i .bak 's/foo/bar/g'
هذا سوف يحل محل الكل فور تحدث في ملفات Python الخاصة بك أسفل الدليل الحالي مع شريط وإنشاء نسخة احتياطية لكل ملف مع .py.bak. تمديد.
وإزالة ملفات de .bak:
find . -name "*.bak" -delete
أنا دائما فعلت ذلك مع إد نص البرامج النصية أو النصوص السابقة.
for i in "$@"; do ex - "$i" << 'eof'; done
%s/old/new/
x
eof
ال السابق الأمر هو مجرد وضع السطر من السادس.
باستخدام Find و Sed مع الاسم أو الدلائل مع استخدام المساحة هذا:
find . -name '*.py' -print0 | xargs -0 sed -i 's/foo/bar/g'
مع قذيفة باش الأخيرة، والافتراض أنك لا تحتاج إلى اجتياز الدلائل
for file in *.txt
do
while read -r line
do
echo ${line//find/replace} > temp
done <"file"
mv temp "$file"
done
لا تنتمي إلى StackOverflow