Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
让grep按时间顺序搜索多个文件_Grep - Fatal编程技术网

让grep按时间顺序搜索多个文件

让grep按时间顺序搜索多个文件,grep,Grep,我有一个目录,里面有很多这样的文件 grep -i 'stg_data.li51_cicmpdtap0521' $(ls -ltr sequencer_cmbcs_seq_debug.log*) | less 如果我使用grep搜索这些文件中的字符串,那么它将按照以下顺序进行搜索:文件log.0,然后是log.1 但我要grep按时间顺序搜索, 那我就喜欢这个, grep -i 'stg_data.li51_cicmpdtap0521' $(ls -ltr sequencer_cmbcs_

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

grep -i 'stg_data.li51_cicmpdtap0521' 
$(ls -ltr sequencer_cmbcs_seq_debug.log*) | less
如果我使用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有什么区别?

ls-ltr不起作用的原因是grep试图使用返回目录列表的整个长输出。本质上,这等同于以下内容:

-rw-rw-rw-  1 user  staff    473 May 24 18:14 file
grep -i 'string' -rw-rw-rw-  1 user  staff    473 May 24 18:14 file | less
这将为您提供如下grep命令:

-rw-rw-rw-  1 user  staff    473 May 24 18:14 file
grep -i 'string' -rw-rw-rw-  1 user  staff    473 May 24 18:14 file | less
注意第一列示例1中的破折号;grep无法解释输入文件的组成,并返回无效选项。当您更改ls命令以删除-l long输出时,您现在只有文件名,grep就可以继续了