Tente passar o diretório que você deseja pesquisar como um parâmetro para o script bash:
#!/usr/bin/env bash
# First argument to script shall be directory in which to search
ARCHIVE=
#find the number of non-empty directories in the given dir
dirs=$(find "$ARCHIVE" -mindepth 1 -maxdepth 1 -not -empty -type d | wc -l)
#find the number of files in the given dir
msgs=$(find "$ARCHIVE" -type f | wc -l)
echo "Number of directories: $dirs"
echo "Total number of messages: $msgs"
Executando o script, chamado dirfiles
, no meu diretório inicial:
$ ./dirfiles ~
Number of directories: 27
Total number of messages: 8703
E em /usr/lib
:
$ ./dirfiles /usr/lib
Number of directories: 161
Total number of messages: 9630
Além disso, find
oferece três maneiras de resolver links simbólicos:
-
-P
: não segue links simbólicos -
-L
: siga os links simbólicos -
-H
: não segue links simbólicos, exceto quando processa argumentos de linha de comando.
Se você não quer seguir links simbólicos, mas $ARCHIVE
é um, então talvez -H
seja o caminho a percorrer.