A maneira mais simples com find é:
find / -daystart -mtime +41 -mtime -408 \
-printf "%M %n %u %g %10s %TY-%Tm-%Td %Ta %TH:%TM:%TS %h/%f\n" |
awk '($7=="Fri"){print}'
Ajuste o -printf , conforme necessário, e fiz com que parecesse próximo de ls -l aqui.
%T (e %A %C ) permitem usar a formatação strftime() para registros de data e hora, sendo %Ta o dia da semana. (Pode ser necessário ajustar os intervalos de dias de 41 a 408, mas isso é apenas uma otimização, você pode apenas grep 2012 ou ajustar -printf para facilitar o grep.)
Editar: uma versão mais robusta, com uma ligeira perda de clareza:
find / -daystart -mtime +41 -mtime -408 \
-printf "%M %n %u %g %10s %TY-%Tm-%Td %Ta %TH:%TM:%TSfind / -daystart -mtime +41 -mtime -408 \
-printf "%M %n %u %g %10s %TY-%Tm-%Td %Ta %TH:%TM:%TS %h/%f\n" |
awk '($7=="Fri"){print}'
%h/%ffind / -daystart -mtime +41 -mtime -408 \
-printf "%M %n %u %g %10s %TY-%Tm-%Td %Ta %TH:%TM:%TS%pre%%h/%f%pre%%pre%" |
gawk 'BEGIN{RS="%pre%%pre%"; FS="[%pre%]"} ($1~/ Fri /) { printf $2 "%pre%"}' |
xargs -0 -n 1 -i ls -l "{}"
%pre%" |
gawk 'BEGIN{RS="%pre%%pre%"; FS="[%pre%]"} ($1~/ Fri /) { printf $2 "%pre%"}' |
xargs -0 -n 1 -i ls -l "{}"
Isso emula -print0 , mas cada linha tem dois campos delimitados por , sendo o nome do arquivo o segundo.
Substitua ls -l "{}"gawk no final com o que você precisa fazer no (s) arquivo (s). Estou explicitamente usando RS , outros awks não são tão gentis com \ 0 bytes em FS / %Tu (atualizados para lidar com novas linhas em nomes de arquivos também).
Além disso, conforme sugerido por mreithub , você pode usar %Ta , bem como, ou em vez de %code% para um dia da semana numerado, uma opção independente de idioma.