paulo1205
(usa Ubuntu)
Enviado em 30/09/2014 - 09:42h
A data faz parte dos nomes dos arquivos, ou é simplesmente uma propriedade (como, por exemplo, a data da última modificação)?
Se fizer parte do nome, você poderia fazer algo como vai abaixo (usando o bash).
rm -Rf arquivo-201[0-9]{0[1-9],1[0-2]}{0[2-9],[12][0-9],3[01]}.jpg
Caso contrário, eu recomendaria usar algo mais sofisticado, como Perl, por exemplo.
find /diretorio -type f -print | \
perl -ne '
chomp($_);
$ctime=(lstat($_))[10];
$month_day=(localtime($ctime))[3];
unlink($_) unless $month_day==1;
'
Dá para fazer também com múltiplos utilitários ligados ao shell, mas vai ficar muito menos eficiente (i.e. vai ficar lento e pesado), especialmente se houver muitos arquivos.
exec 3< <(find /diretorio -type f -print)
while read file <&3; do
ctime=$(stat -c %z "$file")
month_day=$(date -d "@$ctime" +%d)
[[ "$month_day" == "01" ]] || rm -f "$file"
done
exec 3<&-