Experimente o JDiskReport que pode ser viável para você. FileLight é outro se você executar o KDE.
Screenshot do JDiskReport
&
Existe algum aplicativo Linux para encontrar as pastas com o maior número de arquivos?
baobab classifica as pastas pelo seu tamanho total, sou procurando por uma ferramenta que lista pastas pelo número total de arquivos nela.
A razão pela qual estou procurando é porque copiar dezenas de milhares de arquivos pequenos é extremamente lento (muito mais lento do que copiar alguns arquivos grandes do mesmo tamanho), portanto, quero arquivar ou excluir essas pastas com altas contagens de arquivos isso vai diminuir a velocidade da cópia (não vai acelerar as coisas agora, mas seria mais rápido quando eu precisar mover / copiar novamente no futuro).
Experimente o JDiskReport que pode ser viável para você. FileLight é outro se você executar o KDE.
&
Em Shell: liste diretórios ordenados por contagem de arquivos (veja o artigo para explicações):
Um one-liner (para o diretório home):
find ~ -type d -exec sh -c "fc=\$(find '{}' -type f | wc -l); echo -e \"\$fc\t{}\"" \; | sort -nr
Um script:
countFiles () {
# call the recursive function, throw away stdout and send stderr to stdout
# then sort numerically
countFiles_rec "$1" 2>&1 >/dev/null | sort -nr
}
countFiles_rec () {
local -i nfiles
dir="$1"
# count the number of files in this directory only
nfiles=$(find "$dir" -mindepth 1 -maxdepth 1 -type f -print | wc -l)
# loop over the subdirectories of this directory
while IFS= read -r subdir; do
# invoke the recursive function for each one
# save the output in the positional parameters
set -- $(countFiles_rec "$subdir")
# accumulate the number of files found under the subdirectory
(( nfiles += $1 ))
done < <(find "$dir" -mindepth 1 -maxdepth 1 -type d -print)
# print the number of files here, to both stdout and stderr
printf "%d %s\n" $nfiles "$dir" | tee /dev/stderr
}
countFiles Home
Eu tinha certeza que há uma maneira de fazer isso com um script, então fui e descobri.
Se você fizer um script bash como este (digamos que chamamos de 'countfiles'):
#!/bin/bash
find . -type d | while read DIR; do
ls -A $DIR | echo $DIR $(wc -w);done
execute-o e canalize a saída assim:
./countfiles | sort -n -k 2,2 > output
Em seguida, o arquivo de saída terá todos os subdiretórios listados com o número de arquivos logo após (o maior número de arquivos no final).
por exemplo. executar este script como acima na minha pasta / usr mostra isso quando eu faço 'tail output'
./lib/gconv 249
./share/doc 273
./share/i18n/locales 289
./share/mime/application 325
./share/man/man8 328
./share/perl/5.10.1/unicore/lib/gc_sc 393
./lib/python2.6 424
./share/vim/vim72/syntax 529
./bin 533
./share/man/man1 711
Provavelmente, existe uma maneira melhor de fazer isso; Eu não sou muito bom em scripts bash: (
Tente isto:
find . -type d | while read dir; do; echo "$dir" : $(find "$dir" -type f | wc -l); done | sort -k2 -t ':' -n
Veja o que ele faz:
O diretório atual, representado por .
, aparecerá por último, pois é o nó raiz na árvore.
O algoritmo é ruim, mas ele faz o trabalho que eu acho, e ele roda muito rápido de qualquer maneira, então eu acho que é aceitável como um truque rápido para o uso no mundo real.
Tente estas duas alternativas -
1) Para uma saída detalhada da árvore -
for i in $(ls -d */); do tree $i ; done > results.txt
Saída -
c++/
|-- 4.4
| |-- algorithm
| |-- array
| |-- backward
| | |-- auto_ptr.h
| | |-- backward_warning.h
| | |-- binders.h
| | |-- hash_fun.h
| | |-- hash_map
| | |-- hash_set
| | |-- hashtable.h
| | '-- strstream
| |-- bits
| | |-- algorithmfwd.h
...
38 directories, 662 files
2) Para um resumo do uso da árvore -
for i in $(ls -d */); do tree $i | grep -v \-\-\ ; done
Saída -
arpa/
0 directories, 6 files
asm/
0 directories, 56 files
asm-generic/
0 directories, 34 files
bits/
0 directories, 103 files
c++/
38 directories, 662 files
Tags linux file-management