【发布时间】:2016-04-19 18:14:15
【问题描述】:
我只需要选择 20140729 - 20140921 之间的目录。
目录如下所示。
20140729_154208 20140814_221350 20140829_215623
最好的方法是什么?
谢谢
【问题讨论】:
-
不解析
ls的输出。它几乎总是多余且不可靠的。
我只需要选择 20140729 - 20140921 之间的目录。
目录如下所示。
20140729_154208 20140814_221350 20140829_215623
最好的方法是什么?
谢谢
【问题讨论】:
ls的输出。它几乎总是多余且不可靠的。
find
为了查找某个范围内修改过的文件,如果目录中最后一个文件的创建时间与目录名匹配,最简单的方法是在范围的边界创建文件,使用-newer 谓词。
touch -t 201407290000 start
touch -t 201409210000 stop
find . -newer start \! -newer stop -type d
(我不知道如何处理regex 中的日期,但我希望我有时间学习)
awk
是的,为什么不使用awk 而不是构建静态regex 来匹配案例?
将 find 或 ls 结果传递给awk,用一个小程序检查结果在stop 和start 之间(注意:对于find,我必须substr(3,10) 进行比较):
find . |awk -v start=20140729 -v stop=20140921 \
'{ curr=substr($0, 3, 10); if (curr <= stop && curr >= start) { print $0 } }'
(它在 AIX 和 Linux 上对我有用)
【讨论】: