Вам действительно нужно xargs
?
ls *.html | perl -pe 's/.html\n//;$_="[$_](./$_.html)\n"'
(Если у вас более 100000 файлов):
printf "%s\n" *.html | perl -pe 's/.html\n//;$_="[$_](./$_.html)\n"'
или (медленнее, но короче):
for f in *.html; do echo "[${f%.*}](./$f)"; done