我在主目录中以文本new1.txt的名称在文本文件中存储了几个文件名,现在我使用循环列出了它们所在目录中的所有文件。我能够编写命令执行这个while read in; do ls -lrt /newusr/home/logs/"$in"; done < new1.txt
这些日志是昨天生成的,我想要的是查找昨天下午2点以后生成的所有文件,我尝试插入grep语句,但我认为我写错了
while read in; do ls -lrt /prdusr/rhd/prdoper/opLogDir/"$in"; done < new1.txt | grep "Dec 18 {14-23}"
。我在语法或其他任何方式上都可以做到这一点吗?
使用grep
过滤一系列接受时间的时间戳并不容易,因为正则表达式是为文本模式而不是数值比较而设计的(例如,参见此问题和其他类似问题)。
在您的特定情况下,您可以修改语句,如下所示:
grep -E "Dec 18 (1[4-9]|2[0123])"
但是请注意,这需要GNUgrep
和“扩展正则表达式”语法。您使用的语法将搜索在输出行中出现的文字字符串 。{14-23}
ls
此外,作为一个一般的笔记,解析的输出ls
被强烈disrecommended因为有很多陷阱,如果你的filenams包含特殊字符或您的区域设置会导致不同的时间戳记格式等您选择的方法,例如,完全靠ls
的习惯,显示Mon DD HH:MM
过去1/2年左右发生的修改时间的时间戳。使用起来更安全,例如find
,使用-mtime
选项(可能与一起使用-daystart
)。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句