Terminal 使用GREP在文件服务器上搜索具有电子邮件地址的所有文件

Terminal 使用GREP在文件服务器上搜索具有电子邮件地址的所有文件,terminal,grep,zsh,Terminal,Grep,Zsh,有一个数据泄露,我需要找到一个文件服务器的所有文件路径和电子邮件地址 我在努力 grep -lr --include='*.{csv,xls,xlsx,txt}' "\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,6}\b" * >output.txt 但是,这是一无所获 如能提出建议,我将不胜感激。谢谢 您的grep命令几乎是正确的,只有一些小故障使它无法工作 首先,为了匹配您的电子邮件正则表达式,您应该使用grep的扩

有一个数据泄露,我需要找到一个文件服务器的所有文件路径和电子邮件地址

我在努力

grep -lr --include='*.{csv,xls,xlsx,txt}' "\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,6}\b" * >output.txt
但是,这是一无所获


如能提出建议,我将不胜感激。谢谢

您的grep命令几乎是正确的,只有一些小故障使它无法工作

首先,为了匹配您的电子邮件正则表达式,您应该使用grep的扩展正则表达式选项
-E

接下来,如前所述,您的
--include
模式在zsh中不起作用。您需要将结束引号放在大括号之前,如下所示:
--include='*.{csv,xls,xlsx,txt}

最后,如果要获取服务器上的所有文件,则应在根目录
/
上执行此命令,而不是像执行
*
命令一样在目录中的所有文件/目录上执行此命令

所以您的grep命令应该是:

grep-Elr--include='.*.{csv,xls,xlsx,txt}“\b[A-Za-z0-9.\uz%+-]+@[A-Za-z0-9.-]+\[A-Za-z]{2,6}\b”/
需要考虑的一些要点:

  • 您不会在excel文件
    .xls
    .xlsx
    中检测到电子邮件,因为它们是二进制文件,所以grep将无法解析它们
  • ,在电子邮件解析中有很多特殊情况。您当前使用的电子邮件模式将捕获几乎所有的电子邮件,但不是所有的

你到底想在这里做什么?查找包含电子邮件地址的所有文件?包含任何电子邮件地址