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.