如何搜索以 xy_* 开头且今天创建/编辑的文件名?

如何搜索以 xy_* 开头且今天创建/编辑的文件名?

您好,我目前正在尝试搜索以 xy_Number 开头且今天(不是最近 24 小时)创建/编辑的日志文件。

我试过:

find /home/USER/logfilesError/ -maxdepth 1 -type f -daystart -mtime -1 print0 | xargs -0 grep - l xy_*

输出:

find: paths must precede expression: print0

我需要结合:

find -maxdepth 1 -type f -daystart -mtime -1

ls | grep -E "xy_"

我想要实现的是:

从今天的特定位置搜索日志文件,然后进一步搜索这些文件并输出以 ERROR 开头的行。 (其他行 INFO 和 DEBUG)


因此搜索工作正常,我想在搜索后使用 grep 进一步检查文件以查找包含 ERROR 的文件

grep -rl "ERROR" /home/USER/logfilesError/

如何将它们组合到脚本中?与如果?有人可以帮我弄这个吗?

答案1

为什么使用 grep, find 可以完成这项工作:

find /home/USER/logfilesError/ -maxdepth 1 -type f -name "xy_*" -daystart -mtime -1

答案2

从声音来看,您正在寻找-name

find /path -maxdepth 1 -type f -name 'xy_*' -daystart -mtime -1 -exec grep -H ERROR {} +

man find

-name pattern

文件名的基础(删除了前导目录的路径)与 shell 模式匹配。元字符(“*”、“?”和“[]”)与“.”匹配位于基本名称的开头(这是 findutils-4.2.2 中的更改;请参阅下面的标准一致性部分)。要忽略目录及其下的文件,请使用 -prune;请参阅 -path 描述中的示例。尽管事实上包括 Bash 在内的某些 shell 在 shell 模式中赋予了大括号特殊的含义,但大括号并不被认为是特殊的。文件名匹配是使用 fnmatch(3) 库函数执行的。不要忘记将模式用引号引起来,以防止它被 shell 扩展。

相关内容