Luc*_*uca 5 grep debian find date files
我正在我的主目录中搜索在过去两分钟内修改的文件,这些文件也包含某个字符串。我试过这个命令:
find -type d -mmin -2 -ls | grep -Ril "mystring"
Run Code Online (Sandbox Code Playgroud)
它似乎有效,但显然它只打印内部包含给定字符串的文件,而不是 2 分钟前最后修改的包含该字符串的文件。似乎没有执行命令的第一部分。
roa*_*ima 11
您对自己的建议进行了很好的尝试
Run Code Online (Sandbox Code Playgroud)find -type d -mmin -2 -ls | grep -Ril "mystring"
这将识别-type d在过去两分钟内修改过的目录 ( ) 而不是文件 ( -type f)。管道-lsto的输出grep通常会在生成的文件名中搜索mystring. 但是,在这种情况下,该-R标志会更改 的行为grep并忽略您的文件名列表,而是搜索当前目录及其下方的每个文件。
所以,让我们把问题分成两部分
在您的主目录中搜索最近 2 分钟内最后修改的文件
find ~ -type f -mmin -2
Run Code Online (Sandbox Code Playgroud)[文件] 包含某个字符串
grep -Fl 'certain String' {files...}
Run Code Online (Sandbox Code Playgroud)现在你需要把它们放在一起。的{}是用于通过将所生成的文件名的占位符find从步骤1,和后+表明{}可以重复多次,即几个文件名
find ~ -type f -mmin -2 -exec grep -Fl 'certain String' {} +
Run Code Online (Sandbox Code Playgroud)
更改greptoecho grep将显示find命令正在运行的内容;这可能是一种有用的调试技术:
find ~ -type f -mmin -2 -exec echo grep -Fl 'certain String' {} +
Run Code Online (Sandbox Code Playgroud)
请考虑运行man find并man grep找出各种选项是什么,例如-F和-lin grep -Fl,否则您将无法从设置的练习中学到任何东西;你只是在复制一个答案。