首页 > 解决方案 > 让grep按时间顺序搜索多个文件

问题描述

我有一个目录,里面有很多这样的文件,

在此处输入图像描述

如果我使用 grep 在这些文件中搜索一个字符串,那么它将按此顺序搜索,文件 log.0,然后 log.1....

但我希望 grep 按时间顺序搜索,然后我就喜欢这样,

grep -i 'stg_data.li51_cicmpdtap0521' 
$(ls -ltr sequencer_cmbcs_seq_debug.log*) | less

但我得到这个错误

grep:invalid option -- -

在我改变这个之后,它起作用了,

grep -i 'stg_data.li51_cicmpdtap0521' $(ls -tr 
sequencer_cmbcs_seq_debug.log*) | less

为什么 ls -ltr 不起作用,但 ls -tr 起作用?这里有 -l 和没有 -l 有什么区别?

标签: grep

解决方案


原因ls -ltr不起作用是因为 grep 试图使用返回的目录列表的整个“长”输出。本质上,这相当于是这样的:

-rw-rw-rw-  1 user  staff    473 May 24 18:14 file

这会给你一个这样的 grep 命令:

grep -i 'string' -rw-rw-rw-  1 user  staff    473 May 24 18:14 file | less

注意第一列中的破折号(示例 1);grep 无法解释输入文件的内容并返回“无效选项”。当您更改ls命令以删除-l长输出时,您现在只有文件名并且 grep 能够继续。


推荐阅读