eol*_*old 12 unix bash timestamp file list
我正在努力处理在特定月份(例如,2月)修改的列表文件.以下是几次不成功的尝试:
1)我尝试创建临时文件并在下个月第一次设置时间戳,并在目标月份中第一次设置并在find中使用-newer,如下所示:
find -newer "$from" ! -newer "$to"
Run Code Online (Sandbox Code Playgroud)
这列出了在时间间隔($ from,$ to)中修改的文件,但我希望时间间隔[$ from,$ to)(否则,在下个月的第一秒创建的文件会出现误报) .2月修改的列表文件是额外的问题,因为这需要将其中一个时间戳设置为仍然在2月份的最大时间戳,但是2月份的天数取决于它是否是闰年,这需要额外的检查.
2)如果我使用,ls我在解析时会看到很多复杂因素,因为用户名或组可能包含空格.
有没有一种简单的方法和相对便携的方式(所以它适用于任何月份,无论文件名等)?
use*_*621 18
date 允许您轻松生成时间戳,用于以下目的:
date -d "01-Mar-2011 -1 sec" # last second of Feb-2011
Run Code Online (Sandbox Code Playgroud)
幸运的是,相同的语法可能在find:
month="Mar-2010"
find . -newermt "01-$month -1 sec" -and -not -newermt "01-$month +1 month -1 sec"
Run Code Online (Sandbox Code Playgroud)
将找到2010年3月修改的所有文件