grep 如何只显示当前目录中的今天文件?



我想grep今天在当前目录中创建的文件。那么有多少方法可以做到这一点呢?最好的方法是什么?

grep --color 'content' ./directory

这应该能帮你:

find ./directory -maxdepth 1 -type f -daystart -ctime 0 -print | xargs grep --color 'content'

在上面的命令中,我们使用find来查找directory中的所有文件(-type f(,这些文件是今天创建的(-daystart -ctime 0(,然后-print是标准输出的完整文件路径。然后,我们将输出发送到xargs。使用xargs,我们可以通过grep命令执行输出的每一行。这比创建一个for循环并迭代输出的每一行要简单得多。

如果我知道您想在今天修改的./directory中的所有文件中grep"content",那么您可以使用findxargs的组合。例如,要查找今天修改的./directory中的文件,可以提供-mtime 0选项,用于查找24小时前(例如今天(修改的文件。要处理奇怪的文件名,请使用-print0选项使find输出以nul结尾的文件名。您的查找命令可能是:

find . -maxdepth 1 -type f -mtime 0 -print0

生成文件列表后,您可以将结果传递给xargs -0,CCD_19将处理以nul结尾的文件名列表,并使用grep命令,您将获得:

xargs -0 grep --color 'content'

总之,只需将find的结果管道传输到xargs,例如

find . -maxdepth 1 -type f -mtime 0 -print0 | 
xargs -0 grep --color 'content'

试试看,让我知道它是否能满足你的需求,或者你是否还有其他问题。

编辑每条评论

如果您想更精确地控制选择文件的时间、分钟或秒,您可以使用find-newermt选项来归档比您指定的日期更新的所有文件,例如-newermt "2021-07-02 02:10:00"将选择在2:10:00之后创建的今天的文件(今天凌晨2:10:00之后的所有文件(

修改上面的测试并将-mtime 0替换为-newermt "2021-07-02 02:10:00",您将拥有:

find . -maxdepth 1 -type f -newermt "2021-07-02 02:10:00"` -print 0 |
xargs -0 grep --color 'content'

(将时间调整为您想要开始从中选择文件的确切开始时间(

试试看。它更加灵活,因为您可以指定一天中的任何时间,根据文件修改时间开始从中选择文件。

相关内容

  • 没有找到相关文章

最新更新