我在某个文件夹中有一些脚本。比如/var/www/sites
现在我要替换所有文件夹和子文件夹中脚本中硬编码的所有电子邮件地址,并替换为我的电子邮件地址
我该怎么做。
我可以找到
grep -rn "abc@gmail.com" /var/www/sites/
但我不知道如何使用正则表达式并替换
答案 0 :(得分:2)
尝试perl:
perl -p -i -e 's/abc@gmail.com/new@gmail.com/g' /var/www/sites/*
或使用perl / find:
find /var/www/sites/ -exec perl -p -i -e 's/abc@gmail.com/new@gmail.com/g' {} \;
答案 1 :(得分:1)
打开shell,然后
如果你有bash4:
oldmail="abc@gmail.com"
newmail="myemail@provider.tld"
shopt -s globstar
sed -i "/$oldmail/s/$oldmail/$newmail/g" /var/www/sites/**/*
如果不是:
oldmail="abc@gmail.com"
newmail="myemail@provider.tld"
find /var/www/sites -type f -exec sed -i "/$oldmail/s/$oldmail/$newmail/g" {} +
与sed -i
&没有上一个perl -i -pe
的{{1}}个解决方案(我这里用grep
执行此操作)
答案 2 :(得分:0)
find /var/www/sites -type f | xargs sed --in-place 's/abc@gmail\.com/mynewemail@elsewhere.com/g'
答案 3 :(得分:-2)
尝试sed。
grep -rl "abc@gmail.com" /var/www/sites/ | xargs sed -i 's/oldemail/newemail/g'
编辑:
考虑反馈意见。对于之前错误的解决方案感到抱歉!