Se o seu awk
é o GNU awk
, você pode simplesmente usar:
find . -type f | awk '{ match($0, /2013[0-9]+/,arr)} arr[0] >= 201303140000 '
Eu tenho um diretório com arquivos listados assim:
abc201303130110.txt
abc201303140511.txt
abc201303150112.txt
Como você pode ver, o nome do arquivo contém um carimbo de data e hora. Desejo retornar todos os arquivos com o valor 201303140000
ou superior no nome do arquivo.
Eu posso usar o grep para pegar a parte datetime do nome do arquivo, mas não sei como canalizar um filtro que pode fazer algo como X > 201303140000
.
Perl para o resgate! A opção -n
do Perl funciona um pouco como sed -n
e o perl é mais poderoso em sua correspondência e aritmética.
dennis@lightning:/tmp/foo$ ls -1
abc201303130110.txt
abc201303140511.txt
abc201303150112.txt
dennis@lightning:/tmp/foo$ ls | perl -ne '$d=$_; $d =~ s/.*?(\d+).*//s; print if $d >= 201303140000'
abc201303140511.txt
abc201303150112.txt
com zsh
:
print -rl abc<201303140000->.txt