我有一个目录,其中列出的文件如下:
abc201303130110.txt
abc201303140511.txt
abc201303150112.txt
如您所见,文件名包含日期时间戳。我想返回201303140000
文件名中具有该值或更高值的所有文件。
我可以使用 grep 来获取文件名的日期时间部分,但我不知道如何通过可以执行类似X > 201303140000
.
答案1
如果您awk
是 GNU awk
,您可以简单地使用:
find . -type f | awk '{ match($0, /2013[0-9]+/,arr)} arr[0] >= 201303140000 '
答案2
Perl 来救援! Perl 的-n
switch 工作原理有点像sed -n
,并且 perl 在匹配和算术方面更强大。
dennis@lightning:/tmp/foo$ ls -1
abc201303130110.txt
abc201303140511.txt
abc201303150112.txt
dennis@lightning:/tmp/foo$ ls | perl -ne '$d=$_; $d =~ s/.*?(\d+).*/\1/s; print if $d >= 201303140000'
abc201303140511.txt
abc201303150112.txt
答案3
和zsh
:
print -rl abc<201303140000->.txt