我希望在特定日期之后获取所有文件。我尝试过:
ls -ltr | awk {'print $6'} | sed s/-//g | awk {'if ($1-20110415 > 0 ) {print $1}'}
工作50%罚款。最后一个命令只打印文件的日期。如何打印文件和文件名的日期?在awk $8
是文件名,但我不知道如何在命令行中转移到最后print
。
谢谢你, 路加
答案 0 :(得分:19)
尝试这样的find命令:
find /my/path -mtime -1 # to get files modified in last 1 day
find /my/path -mtime -1.5 # to get files modified in last 1.5 day
答案 1 :(得分:4)
如果您正在寻找一种查找更新文件并对其进行处理的方法,您可以在流程结束后使用查找touch
-newer
文件-newer file
File was modified more recently than file.
:
find /path/to/dir -newer touched.file
因此,当您需要更新的文件列表时,您需要执行此操作:
{{1}}
这会以递归方式列出/ path / to / dir中的所有文件,其修改日期晚于 touching.file 。完成处理更新文件或记下下一次迭代时要测试的文件时,不要忘记再次触摸 touching.file 。
答案 2 :(得分:0)
这个稍微修改过的版本怎么样?
ls -ltr | awk {'print $6 " " $8 '} | sed s/-//g | awk {'if ($1-20110426 > 0 ) {print $1 " " $2}'}
似乎为我做了诀窍......?
答案 3 :(得分:0)
如何将find与其中一个基于时间的开关一起使用,然后使用printf指定您希望显示哪些字段?您可以在手册页中找到所有选项。
编辑 - 我现在没有合适的环境给你一个例子 - 我明天会尝试更新答案
答案 4 :(得分:0)
ls -ltr --time-style=long-iso <path> | awk '$6 >= "2018-10-10" {print $6,$8}'
这将为我提供在2018-10-10
或更高版本上已修改的指定路径上的所有文件。
--time-style=long-iso
是确保时间包括年,月和日的好方法。如果您保留多年的文件,这可以帮助我排除旧文件。