Você nunca deve tentar analisar ls
para uma lista de nomes de arquivos. O bash wiki tem um artigo inteiro sobre por que você não deve analisar a saída de ls
. Ter arquivos com espaços é um dos maiores motivos.
Você deseja usar um glob
:
printf '%s\n' *
Sua pergunta apenas indica que você deseja imprimir o nome do arquivo, mas suspeito que você também queira executar uma ação. Nesse caso, você deseja iterar sobre o glob:
for f in *; do
somecommand "$f"
done