命令搜索不同目录中但具有相似文件扩展名的文件

命令搜索不同目录中但具有相似文件扩展名的文件

新手问题在这里。

我正在尝试管理几台 Linux 机器,但尽管它们看起来很相似,但不知怎的,它们却彼此如此不同。例如,其中一台服务器上的 mysql 日志文件可以存储在 /var/log/mysql/backups/thelog 中,另一台服务器上的 mysql 日志文件可以存储在 /var/log/ 中。现在想象一下,服务器越来越多。好消息是,例如,在 99% 的服务器上,日志文件扩展名为 .log 因此,每次我花费大量时间搜索仅存储日志的位置。 dmesg 不适用于所有这些服务器,而且它也不是很有帮助。那么你能帮助我并告诉我某种命令/脚本吗?例如,我可以用它在所有 .log 文件中搜索并 grep 一些可能有用的东西?提前非常感谢!

答案1

为了grep

  • 用于-r查看每个目录下

    -R, -r, --recursive
    递归读取每个目录下的所有文件;这相当于 -d 递归选项。

  • 使用--include选项来限制文件

    --include=GLOB
    仅搜索基本名称与 GLOB 匹配的文件(使用 --exclude 中所述的通配符匹配)。

.log要在一台计算机上的任何子目录中的文件中搜索“文本” /var,命令将类似于:

grep -r --include \*.log 'text' /var

您必须通过 ssh 连接到每个服务器,然后运行grep​​.命令看起来像这样:

for server in $(cat servers.txt); do ssh "$server" "grep-command"> "output-$server"; done

文档引用自这里

答案2

find自己可以做很多事情:

find . -name "*.log" -exec grep -l "pattern" {} +

将显示当前目录中或当前目录下包含该模式的日志文件

答案3

您需要找到该文件并 grep 内容:

for f in $(find -name "*.log"); do grep -n "PATTERN" $f; done

相关内容