É necessário alterar seus comandos para este formulário:
directories=$(printf "%'d\n" $(find "$1" -type f | wc -l))
printf
usa o separador de milhares para sua localidade atual, que pode ser uma vírgula, ponto ou nada. Você pode alterar o código de idioma se quiser forçar vírgulas.
Além disso, você pode fazer isso da seguinte maneira:
if [ -d "$1" ]; then
directories=$(find "$1" -type d | wc -l)
files=$(find "$1" -type f | wc -l)
sym=$(find "$1" -type l | wc -l)
e substitua echo
para printf
#Printing the output to the terminal
printf "%s %'d\n" "Directories" $directories
printf "%s %'d\n" "Files" $files
printf "%s %'d\n" "Sym links" $sym
O erro aconteceu, porque você misturou dois comandos diferentes - os printf
do bash e -printf
do find.
O formato -printf
the "%'d"
da localização está incorreto. A cotação singular não é permitida e %d
é a profundidade do arquivo na árvore de diretórios. Você pode encontrar todas as opções -printf
no man find
, digitando: /printf format
.
A propósito, foi necessário adicionar \n
a printf
(bash's e find's): "%d\n"
, caso contrário, eles imprimirão todas as saídas em uma linha.