zcat 管道到 grep

发布于 2024-07-14 10:28:12 字数 209 浏览 9 评论 0原文

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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

分分钟 2024-07-21 10:28:12

使用 xargs 对 awk 输出的文件名运行 grep:

ls -ltr | grep 'Mar 4' | awk '{print 9}' | xargs zcat -fq | grep 12345

或者,我猜,从 awk 本身运行管道的其余部分。

Use xargs to run the grep on the filenames output by awk:

ls -ltr | grep 'Mar 4' | awk '{print 9}' | xargs zcat -fq | grep 12345

Or, I guess, run the rest of the pipe from awk itself.

蓝眼泪 2024-07-21 10:28:12

尝试使用 find 代替。 和/或 xargs。

Try using find instead. And/or xargs.

暮凉 2024-07-21 10:28:12

如果我正确地读取了您的命令行,则 zcat 正在尝试解压缩文件名而不是其内容。 使用 xargs 来解决这个问题:

ls -ltr|grep 'Mar  4'| awk '{print $9 }'|xargs zcat -fq |grep  12345

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:

ls -ltr|grep 'Mar  4'| awk '{print $9 }'|xargs zcat -fq |grep  12345
北陌 2024-07-21 10:28:12

除了关于使用 xargsfind 的良好答案之外,您还可以通过消除 zcat 和管道到 来摆脱额外的进程>zgrepgrep -Z 代替。

In addition to the fine answers about using xargs or find, you can also get rid of an extra process by eliminating zcat and piping to zgrep or grep -Z instead.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文