我从 here 找到了这个练习
使用 grep 列出主目录中 10 小时内更改的文件,但忽略目录。
使用 find
似乎微不足道命令,但我如何使用 grep
命令查找过去 10 小时内更改的文件?
谢谢!
最佳答案
好吧,这很令人厌恶,但它是一种练习,我很好奇。正则表达式可能太简单,但它在我的测试用例中有效。这里的“技巧”是我使用“stat”而不是“ls”。使用“stat”,您可以请求特定字段(包括上次修改日期)并格式化输出。在这里,我获取当前时间戳,返回 10 小时,然后以字符串形式收集针对模式格式化的统计信息,通过 grep 修改日期时间戳和文件名:
sh-3.2$ date "+%s"
1373170496
sh-3.2$ bc
bc 1.06
Copyright 1991-1994, 1997, 1998, 2000 Free Software Foundation, Inc.
This is free software with ABSOLUTELY NO WARRANTY.
For details type `warranty'.
1373170496-36000
1373134496
sh-3.2$ stat -f"%Sp %m %N" * | grep "^[\-].*13731[3-7][0-9][0-9][0-9][0-9].*$"
-rw-r--r-- 1373168941 fileAB
-rw-r--r-- 1373168944 fileAC
其中 fileAB 和 fileAC 是我触及的一些代表性数据的两个空文件。匹配显示统计输出,手册页对此进行了更好的解释。
关于regex - 使用 grep 列出目录中 10 小时内更改的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17508812/