Thanks, (I had tried the (q) and the extra assignment after pws suggested it) but no luck: zsh -f nuc2% function recent { function> local dir= if [[ $# -gt 2 ]]; then if [[ ! -d "$3" ]]; then print -u2 "$0: directory \"$3\" does not exist." return 1 fi [[ $3 != '.' ]] && dir="$3"/ fi local f=( ${dir}${~2:-*}(-om[1,${1:-1}]) ) print -lr -- ${(@q-)f} } nuc2% recent 3 zsh 'Any Given Sunday.mkv' TheEnglishPatient.mkv nuc2% \ls -ld $(recent 3) ls: cannot access "'Any": No such file or directory ls: cannot access 'Given': No such file or directory ls: cannot access "Sunday.mkv'": No such file or directory -rw-r--r-- 1 acs acs 727146010 Oct 22 15:52 TheEnglishPatient.mkv drwxr-xr-x 3 acs acs 3488 Oct 23 12:20 zsh What am I doing wrong? Does quoting not work correctly in captured output? I appreciate knowing that printf is builtin; thanks. Sorry I missed that. - Vin On Sat, Oct 23, 2021 at 3:26 PM Bart Schaefer wrote: > On Sat, Oct 23, 2021 at 12:08 PM Vin Shelton > wrote: > > > > print -l -- ${dir}${~2:-*}(-om[1,${1:-1}]) > > You're still missing any of the (q) options on those expansions. > > The easiest thing to do here is something like > > local recent=( ${dir}${~2:-*}(-om[1,${1:-1}]) ) > print -lr -- ${(@q-)recent} > > It's important to add the quoting after any globbing but before you > print the result. > > > Do I really have to use an external command (like `printf') to make this > work? > > printf is a zsh builtin, for some years now. But as long as you add > quoting and do not use echo, you should be OK. >