script:检查一个目录的所有文件是否都包含一个特定的字符串,然后在linuxbash脚本中发送带有该文件名的邮件



我必须编写一个脚本,检查目录中的所有文件是否都包含特定字符串。如果是,则使用该文件名发送邮件。

让我更深入地解释一下。假设我有一个目录/demo/,这个目录包含4个文件,命名为:

  1. file1
  2. file2
  3. file3
  4. file4

现在我要查找的字符串是"some text""some text2",如果任何文件包含任何一个字符串,则应该发送邮件。假设file1包含"some text"file3包含"some text2",那么邮件应该像一样发送

Alert check file1
Alert check file2

两个文件的邮件不同。

现在我想我必须使用这个命令:

grep -rnw '/demo/' -e 'some text', 'some text2'

但我不知道如何检查我的状况,所以有什么方法可以做到这一点吗?

对于邮件,我使用sendmail服务,但我更担心我的情况。

查找具有grep的两个正则表达式的命令是grep -e 'some text' -e 'some text2'。可能更习惯地使用grep -E和单个正则表达式。将-n替换为-l以仅打印文件名。

grep -E 'some text|some text2' -lrw /demo/ |
while read -r filename; do
sendmail -oi -t <<____
Subject: Alert for $filename
To: you@example.net
Alert check $filename
____
done

只有当文件名中不包含换行符时,此操作才能正常工作。如果您需要处理完全任意的文件名,可以查看find -exec

最新更新