Você pode dividir e usar o mesmo script awk
:
echo "test_list_20160915_bla.log" |
awk -F_ '$3 ~ /^[1-9][0-9]*$/ { print substr($3,1,4) "/" substr($3,5,2) "/" substr($3,7,2) }'
Aqui, apenas extraímos os grupos de dígitos ano, mês e dia do terceiro campo "_" e os imprimimos.
Ou com sed
, que também lida com seu requisito adicional:
(
echo "test_list_20160915_bla.log"
echo "test_20161205145213.log"
) |
sed -r 's!^.*_([0-9]{4})([0-9]{2})([0-9]{2}).*$!//!'
Aqui, usamos uma Expressão Regular para capturar grupos de três dígitos para ano, mês e dia, descartando todo o resto e, em seguida, imprimimos os três grupos associados por /
.