Eu criei um arquivo na minha pasta pessoal chamado filecnt
, que contém as seguintes linhas de código:
for d in *; do
if [[ -d $d ]]; then
echo 'find $d -type f | wc -l' $d;
fi
done | sort -n -k1
Em seguida, alterei as permissões de arquivo para permitir a execução:
chmod 755 ~/filecnt
Agora, em qualquer diretório, posso executar ~/filecnt
para ver uma lista de subdiretórios no diretório atual com suas contagens de arquivos recursivas. A lista é classificada por contagem de arquivos (crescente). Por exemplo:
0 access-logs
20 logs
187 etc
232 cache
694 tmp
30007 mail
48325 public_html
Você pode realizar o mesmo simplesmente executando o seguinte comando a partir da CLI:
for d in *; do if [[ -d $d ]]; then echo 'find $d -type f | wc -l' $d; fi done | sort -n -k1
Adicione -r
ao comando final sort
para ordenar decrescente.
Para produzir uma saída ligeiramente mais agradável, você também pode usar o seguinte código em ~/filecnt
em vez do código no topo desta resposta:
echo "File Count Dir Size Directory"
echo "---------- ---------- -------------------------"
for d in *; do
if [[ -d $d ]]; then
echo 'find $d -type f | wc -l' | awk '{printf "%10s ", $0;}'
echo 'du -h --max-depth=0 $d' | cut -d\ -f 1 $1 | awk '{printf "%10s ", $0;}'
echo $d
fi
done | sort -n -k1
echo
A saída é assim:
File Count Dir Size Directory
---------- ---------- -------------------------
0 0 access-logs
20 8.3M logs
187 4.8M etc
232 228K cache
694 23M tmp
30715 6.4G mail
48272 2.3G public_html