Filenames

使用數學過濾字元串列表

  • September 21, 2017

我有一個目錄,其中列出瞭如下文件:

abc201303130110.txt
abc201303140511.txt
abc201303150112.txt

如您所見,文件名包含日期時間戳。我想返回文件名中值201303140000或更高的所有文件。

我可以使用 grep 來獲取文件名的日期時間部分,但我不知道如何通過可以執行類似X > 201303140000.

如果您awk是 GNU awk,您可以簡單地使用:

find . -type f | awk '{ match($0, /2013[0-9]+/,arr)}  arr[0] >= 201303140000 '

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

引用自:https://unix.stackexchange.com/questions/68980