Faça um loop sobre os arquivos que constituem uma metade dos pares e, para cada arquivo, construa o nome do arquivo do par correspondente e do arquivo de saída:
for b4_file in ./*_B4.TIF; do
b5_file="${b4_file%_B4.TIF}_B5.TIF"
ndvi_file="$HOME/Geodata/goteborg/croped/ndvi/${b4_file%_B4.TIF}_NDVI.TIF"
if [ ! -f "$b5_file" ]; then
printf 'Expected to find "%s" to go with "%s", but did not\n' "$b5_file" "$b4_file" >&2
continue
fi
# do whatever it is you need to do with "$b4_file" and "$b5_file"
gdal_calc.py -A "$b4_file" -B "$b5_file" --type=Float32 \
--outfile="$ndvi_file --calc="(B-A)/(B+A)"
done