Assumindo as ferramentas GNU, eu faria algo como
find . -type f \( -name '*.[0-9][0-9][0-9][0-9]-[0-1][0-9]-[0-3][0-9].log.*.gz' \
\( -mtime -10 -o -delete -o -true \) -o -name '*.log.*' ! -name '*.gz' \
\( -mtime +9 \( -delete -o -true \) -o -printf '%TF/%pfind . -type f \( -name '*.[0-9][0-9][0-9][0-9]-[0-1][0-9]-[0-3][0-9].log.*.gz' \
\( -mtime -10 -o -delete -o -true \) -o -name '*.log.*' ! -name '*.gz' \
\( -mtime +9 \( -delete -o -true \) -o -printf '%TF/%p%pre%' \) \) |
while IFS=/ read -rd '' date file; do
basename=${file##*/}
dirname=${file%/*}
newfile=$dirname/${basename%.log.*}.$date.log.${basename##*.log.}
mv "$file" "$newfile" && gzip "$newfile"
done
' \) \) |
while IFS=/ read -rd '' date file; do
basename=${file##*/}
dirname=${file%/*}
newfile=$dirname/${basename%.log.*}.$date.log.${basename##*.log.}
mv "$file" "$newfile" && gzip "$newfile"
done