我有一个类似这样的文件结构:
/apps/base/logs1
and
/apps/base/logs2
logs1 和 logs2 文件夹均包含 .log 文件以及一些其他文件。
我正在尝试从 /apps 文件夹执行此操作,我希望能够找到所有包含字符串“ERROR”的文件(文件夹和子文件夹)。
此命令
find . -name "*.log" -exec grep -H "ERROR" '{}' \; -print
运行良好,当我在文件夹 /apps/base/logs1 或 /apps/base/logs2 中时,直接在文件夹中显示所有 .log 文件。
但是当我切换到文件夹/apps时,此命令没有产生任何结果。
我是否遗漏了什么或需要更改什么?我尝试了其他几个选项,但无法使其工作。
任何帮助都将不胜感激。谢谢
答案1
好的,我得到了答案。由于我在企业环境中,因此创建了许多符号链接。我必须明确要求 find 命令也遵循符号链接。因此命令现在如下所示:
find -L /apps -name "*.log" -exec grep -H "ERROR" '{}' \; -print
问题在于,像 logs1 和 logs2 这样的目录是符号链接,因此 find 命令不会跟踪它们。-L 选项强制命令也查看符号链接。