Tentar analisar a saída de ls
é imprudente, mesmo quando se usa uma implementação que suporte opções para saída não ambígua, como -b
ou -Q
na versão GNU.
Em vez disso, você deve usar um shell glob para processar arquivos um de cada vez; no Bash, podemos usar uma matriz para isso:
#!/bin/bash
files=(*)
for i in "${files[@]}"
do
stat --format '%A %U %n' -- "$i"
done
printf "Total number of files: %d\n" ${#files[@]}