我想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"
,那么您可以使用find
和xargs
的组合。例如,要查找今天修改的./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'
(将时间调整为您想要开始从中选择文件的确切开始时间(
试试看。它更加灵活,因为您可以指定一天中的任何时间,根据文件修改时间开始从中选择文件。