我很难列出在特定月份(例如,二月)修改的文件。
以下是几次不成功的尝试:
- 我尝试创建临时文件并将它们的时间戳设置为下个月的第一次和目标月份的第一次,并在
find
中使用-newer
,像这样:
find -newer "$from" ! -newer "$to"
这列出了在时间间隔 ($from
, $to
) 内修改的文件,但我想要时间间隔 [$from
, $to
) (否则,在下个月的第一秒创建的文件会有误报)。列出 2 月修改的文件是另一个问题,因为这需要将其中一个时间戳设置为 2 月仍然最大的时间戳,但 2 月的天数根据是否是闰年而变化,这需要额外检查.
- 如果我使用
ls
,我在解析时会遇到很多复杂情况,因为用户名或组可能包含空格。
是否有一种简单且相对便携的方法来执行此操作(因此它适用于任何月份,无论文件名等如何)?
最佳答案
日期
allows您可以轻松地为这样的目的生成时间戳:
date -d "01-Mar-2011 -1 sec" # last second of Feb-2011
幸运的是,find
中可以使用相同的语法:
month="Mar-2010"
find . -newermt "01-$month -1 sec" -and -not -newermt "01-$month +1 month -1 sec"
将查找在 2010 年 3 月修改的所有文件。
请参阅 find
's man page 中的选项 -newerXY
.
关于bash - 列出特定月份修改的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5289420/