使用zstdgrep检索多子目录zst日志文件报错,求正确用法
解决zstdgrep多目录搜索zst归档日志的问题
你的操作错误点分析:
- 通配符使用不当:直接用
webserver.log.*.zst作为命令参数时,如果当前目录没有匹配的文件,shell不会自动展开通配符,zstd会把这个字符串当成具体文件名,自然报"找不到文件"。 - 参数位置错误:
--include是grep的选项,必须放在搜索模式之前,且需要用=连接匹配模式(或加空格);你把它放在模式之后,zstd会把--include当成文件名处理,导致报错。 - 递归搜索未指定目录:用
-r递归时,需要指定搜索的根目录(比如./代表当前目录),而不是直接放文件名模式。
正确的命令用法
方法1:用zstdgrep原生递归+过滤
zstdgrep -r --include="webserver.log.*.zst" "my log message text" ./
说明:
-r:递归搜索子目录--include="webserver.log.*.zst":只匹配符合该模式的zst文件(必须放在搜索模式前面)./:指定从当前目录开始递归搜索
方法2:用find配合zstdgrep(更可靠,避免参数兼容问题)
如果zstdgrep对--include支持不佳,用find命令先定位所有目标文件,再批量传给zstdgrep:
find ./ -name "webserver.log.*.zst" -exec zstdgrep "my log message text" {} +
说明:
find ./ -name "webserver.log.*.zst":遍历当前目录下所有符合文件名模式的zst文件-exec ... {} +:把找到的文件批量传给zstdgrep处理,效率比-exec ... {} \;高
内容的提问来源于stack exchange,提问作者Tomáš Zato
相关产品推荐
相关产品推荐

