【发布时间】:2010-10-12 15:36:38
【问题描述】:
ls -ltr|grep 'Mar 4'| awk '{print $9 }'|zcat -fq |grep 12345
我想查找在某个日期修改的所有文件,然后对它们进行 zcat 并在文件中搜索数字字符串。
上述方法不起作用,因为它在文件名中搜索字符串而不是文件本身。
有什么帮助吗?
M
【问题讨论】:
ls -ltr|grep 'Mar 4'| awk '{print $9 }'|zcat -fq |grep 12345
我想查找在某个日期修改的所有文件,然后对它们进行 zcat 并在文件中搜索数字字符串。
上述方法不起作用,因为它在文件名中搜索字符串而不是文件本身。
有什么帮助吗?
M
【问题讨论】:
使用 xargs 对 awk 输出的文件名运行 grep:
ls -ltr | grep 'Mar 4' | awk '{print 9}' | xargs zcat -fq | grep 12345
或者,我猜,从 awk 本身运行管道的其余部分。
【讨论】:
尝试改用find。和/或xargs。
【讨论】:
如果我正确阅读了您的命令行,则它的 zcat 正在尝试解压缩文件名而不是其内容。使用 xargs 来解决这个问题:
ls -ltr|grep 'Mar 4'| awk '{print $9 }'|xargs zcat -fq |grep 12345
【讨论】:
除了关于使用xargs 或find 的正确答案之外,您还可以通过消除zcat 并改为管道到zgrep 或grep -Z 来摆脱额外的过程。
【讨论】: