使用数学过滤字符串列表

使用数学过滤字符串列表

我有一个目录,其中列出的文件如下:

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 的-nswitch 工作原理有点像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

相关内容