日期之后的文件列表

时间:2011-04-26 21:32:22

标签: bash

我希望在特定日期之后获取所有文件。我尝试过:

ls -ltr | awk {'print $6'} | sed s/-//g | awk {'if ($1-20110415 > 0 )  {print $1}'}

工作50%罚款。最后一个命令只打印文件的日期。如何打印文件和文件名的日期?在awk $8是文件名,但我不知道如何在命令行中转移到最后print

谢谢你, 路加

5 个答案:

答案 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是确保时间包括年,月和日的好方法。如果您保留多年的文件,这可以帮助我排除旧文件。