Como você está aprendendo, aqui estão algumas orientações sobre suas perguntas, em oposição ao roteiro completo.
Há mais de uma maneira de obter o tamanho de um arquivo. Nos sistemas Linux, o stat
utility é uma ótima opção, porque você pode perguntar diretamente pelos bytes:
bytes=$(stat -c %s -- "$f")
outra opção é o utilitário wc :
bytes=$(wc -c < "$f")
Note que você quer redirecionar o arquivo para wc
ao invés do instintivo wc -c "$f"
, já que o último formulário também mostrará o nome do arquivo, enquanto o primeiro (pois não sabe o nome do arquivo), simplesmente gera a contagem de bytes.
Para testar se um determinado arquivo é um arquivo ou diretório regular, o teste usual é:
if [ -d "$f" ]
then
echo It is a directory
else
echo It is not a directory
fi
Para contar o número de arquivos (não ocultos) em um diretório, você tem algumas opções:
-
use o utilitário
set
especificado pelo POSIX:set -- /path/to/dir/*; echo "$#"
-
use um array (desde que você marcou o bash):
files=( /path/to/dir/* ) echo "There are ${#files[@]} files in there"
Estes contarão o número de "arquivos" (arquivos e diretórios) naquele diretório. O comportamento padrão na maioria dos shells é omitir arquivos de pontos (por exemplo, .bashrc
) ao expandir o *
glob; você pode ajustar isso com o bash executando shopt -s dotglob
ou shopt -u dotglob
e verifique com shopt dotglob
.