É 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.