zcat 管道到 grep
ls -ltr|grep 'Mar 4'| awk '{print $9 }'|zcat -fq |grep 12345
我想找到在某个日期修改的所有文件,然后 zcat 它们并在字段中搜索数字字符串。
上面的代码不起作用,因为它在文件名中搜索字符串而不是文件本身。
有什么帮助吗?
中号
ls -ltr|grep 'Mar 4'| awk '{print $9 }'|zcat -fq |grep 12345
I want to find all files modified on a certain date and then zcat them and search the fiels for a number string.
the above doesn't work because it searches the file name for the string not the file itself.
Any help?
M
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
使用 xargs 对 awk 输出的文件名运行 grep:
或者,我猜,从 awk 本身运行管道的其余部分。
Use
xargs
to run the grep on the filenames output by awk:Or, I guess, run the rest of the pipe from awk itself.
尝试使用
find
代替。 和/或 xargs。Try using
find
instead. And/orxargs
.如果我正确地读取了您的命令行,则 zcat 正在尝试解压缩文件名而不是其内容。 使用 xargs 来解决这个问题:
If I read your command line correctly, its zcat that is trying to unpack the filenames instead of their content. Use xargs to solve this:
除了关于使用
xargs
或find
的良好答案之外,您还可以通过消除zcat
和管道到来摆脱额外的进程>zgrep
或grep -Z
代替。In addition to the fine answers about using
xargs
orfind
, you can also get rid of an extra process by eliminatingzcat
and piping tozgrep
orgrep -Z
instead.