С GNU date
, пытаясь запустить как можно меньше команд date
(2):
TZ=UTC0 date -f - '+%s %w' << EOF |
20170101
20170630
EOF
awk -v d=86400 '{
d1 = $1 + (6 - $2) * d
getline
for (t = d1; t <= $1; t += 7 * d) print "@" t}' |
TZ=UTC0 date -f - +%Y%m%d