如何替换linux中特定文件夹中找到的所有电子邮件地址

时间:2012-11-30 17:23:06

标签: regex linux awk grep

我在某个文件夹中有一些脚本。比如/var/www/sites

现在我要替换所有文件夹和子文件夹中脚本中硬编码的所有电子邮件地址,并替换为我的电子邮件地址

我该怎么做。

我可以找到

grep -rn "abc@gmail.com" /var/www/sites/

但我不知道如何使用正则表达式并替换

4 个答案:

答案 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)

打开,然后

如果你有

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'

编辑:

考虑反馈意见。对于之前错误的解决方案感到抱歉!