First, I disbelieve you. ls ../images would output only the basenames, like:
a.png
b.png
...etc...
A different command ls ../images/* could give the output you show.
Although on a system using the ls from GNU coreutils, like Linux, if the output is a terminal and the filenames are short like you showed, ls without options would do multicolumn output more like:
../images/aaaaa.png ../images/ddddd.png ../images/ggggg.png
../images/b.png ../images/eeeee.png ../images/hhhhhh.png
../images/ccccc.png ../images/f.png ../images/iiiiii.png
unless you have an alias (or shadowing function or script) that forces the -1 (one) option to prevent this. Or the actual names are (significantly) longer, as they probably should be. Or you are piping to something, even cat, because then the output of ls is the pipe not the terminal. These details matter.
For some cases sed is as good as awk, and usually terser:
ls | sed 's/^//'
# sed processes a string of command(s) for each line read from stdin,
# and writes the result to stdout (by default, -n overrides this)
# s/old/new/ is string replacement using regex (which can be complex)
# ^ in old matches the beginning of the line
# $ in old matches the end of the line
# this assumes none of your filenames contains a newline character
# which Unix permits, but is rarely done because it is quite confusing
or since you like printf it can do the whole job:
printf '\n' ../images/*
# printf takes a format string containing any mixture of literal text
# (including backslash+letter escapes mostly the same as C et succ)
# and conversion specifiers beginning with % which each interpolate one argument
# it repeats the format as needed to handle all the arguments, so here
# with one c.s. it repeats the format once for each argument = filename
# this 'works' even if a filename contains newline
# (but I don't think the result will work correctly as markdown)