Eu faria assim:
find "$logfolder" \( -name '*.log' -o -name '*lst' \) -printf "%TB\t%TY\t%p\n" |
awk '$1==m && $2==y' m="$month" y="$year" | cut -f 3-
Explicação
Agrupando as duas chamadas -name
entre parênteses, você pode combiná-las com o sinalizador -o
(ou). Isso fará com que find
procure arquivos .log
ou .lst
. O -printf
(uma extensão GNU) imprime o mês de modificação do arquivo ( %TB
), em seguida, seu ano de modificação ( %TY
) e seu caminho ( %p
), com uma tabulação ( \t
) entre cada campo .
O awk
simplesmente verifica se o primeiro campo (o mês) é igual a $month
e o segundo é igual a $year
.
O cut
remove os dois primeiros campos (mês e ano) e imprime tudo a partir do terceiro campo.
Eu testei o acima criando arquivos modificados em dezembro de 2012 (e defina $month
para "dezembro" e $year
para 2012):
$ touch -d "December 13 2012" {a,b,c}{.lst,.log}
$ touch c.lst a.log ## c.lst and a.log now have today's modification date.
$ find $logfolder \( -name '*.log' -o -name '*lst' \) -printf "%TB\t%TY\t%p\n" |
awk '$1==m && $2==y' m="$month" y="$year" | cut -f 3-
./b.log
./c.log
./b.lst
./a.lst
(observe que os nomes de arquivos e diretórios não contêm caracteres de nova linha).