Arquivos e diretórios podem ter novas linhas em seus nomes, então você não pode "apenas" usar wc -l
como você está fazendo.
Se você quiser um script que use um parâmetro e conte recursivamente arquivos e diretórios, use:
#!/bin/bash
echo -n 'total directories:'; find "$1" -type d -printf \n | wc -l
echo -n 'total files:'; find "$1" -type f -printf \n | wc -l
E chame o script fornecendo o diretório como argumento de linha de comando:
./your_script_name /home/e_g_your_home_dir.
Embora, curto, o acima é de um para os diretórios (a menos que você considere um diretório para ser "em" em si), você também pode substituir wc -l
com algo que pode lidar com "linhas" terminadas em NUL e
use -print0
#!/bin/bash
echo -n 'total directories:'; find "$1" -type d -print0 | python -c "import sys; print len(sys.stdin.read().split('#!/bin/bash
echo -n 'total directories:'; find "$1" -type d -printf \n | wc -l
echo -n 'total files:'; find "$1" -type f -printf \n | wc -l
'))-2"
echo -n 'total files:'; find "$1" -type f -print0 | python -c "import sys; print len(sys.stdin.read().split('./your_script_name /home/e_g_your_home_dir.
'))-1"
Se você não quiser fazer isso recursivamente (contando apenas os arquivos / diretórios no diretório especificado e não aqueles em um diretório que esteja no diretório especificado), adicione -maxdepth 1
após o% co_de parâmetro%.