No Linux, aqui estão alguns exemplos de saída da ncdu
ferramenta NCurses Disk Usage:
comando:
ncdu /boot
ncdu 1.14.1 ~ Use the arrow keys to navigate, press ? for help
--- /boot -----------------------------------------------------
100.2 MiB [##########] initrd.img-5.13.0-28-generic
100.2 MiB [######### ] initrd.img-5.13.0-27-generic
11.2 MiB [# ] vmlinuz-5.11.0-46-generic
9.7 MiB [ ] vmlinuz-5.13.0-28-generic
9.7 MiB [ ] vmlinuz-5.13.0-27-generic
9.7 MiB [ ] vmlinuz-5.13.0-25-generic
8.0 MiB [ ] /grub
5.7 MiB [ ] System.map-5.13.0-28-generic
5.7 MiB [ ] System.map-5.13.0-27-generic
5.7 MiB [ ] System.map-5.13.0-25-generic
5.6 MiB [ ] System.map-5.11.0-46-generic
252.0 KiB [ ] config-5.13.0-28-generic
252.0 KiB [ ] config-5.13.0-27-generic
252.0 KiB [ ] config-5.13.0-25-generic
252.0 KiB [ ] config-5.11.0-46-generic
184.0 KiB [ ] memtest86+_multiboot.bin
184.0 KiB [ ] memtest86+.elf
180.0 KiB [ ] memtest86+.bin
! 16.0 KiB [ ] /lost+found
! 4.0 KiB [ ] /efi
@ 0.0 B [ ] initrd.img.old
@ 0.0 B [ ] initrd.img
@ 0.0 B [ ] vmlinuz.old
@ 0.0 B [ ] vmlinuz
MAS, é um programa humano-interativo e essa saída não é programável. Eu gostaria de armazená-lo em uma variável, então, como posso obter uma saída semelhante du
?
Esta é uma pergunta complementar à minha pergunta aqui: Como fazer ncdu
mostrar um resumo rápido do uso do disco e sair?
O uso final será algo assim:
output_before="$(du /boot)"
# do a bunch of stuff here which reduces the size of /boot
output_after="$(du /boot)"
echo "Before:"
echo "$output_before"
echo ""
echo "After:"
echo "$output_after"
Aqui está um começo, mas ele não mostra a saída na ordem decrescente adequada do maior para o menor em tamanho:
du --all --max-depth=1 -h /boot
O que eu gostaria de ver:
--- /boot -----------------------------------------------------
100.2 MiB [##########] initrd.img-5.13.0-28-generic
100.2 MiB [######### ] initrd.img-5.13.0-27-generic
11.2 MiB [# ] vmlinuz-5.11.0-46-generic
9.7 MiB [ ] vmlinuz-5.13.0-28-generic
9.7 MiB [ ] vmlinuz-5.13.0-27-generic
9.7 MiB [ ] vmlinuz-5.13.0-25-generic
8.0 MiB [ ] /grub
5.7 MiB [ ] System.map-5.13.0-28-generic
5.7 MiB [ ] System.map-5.13.0-27-generic
5.7 MiB [ ] System.map-5.13.0-25-generic
5.6 MiB [ ] System.map-5.11.0-46-generic
252.0 KiB [ ] config-5.13.0-28-generic
252.0 KiB [ ] config-5.13.0-27-generic
252.0 KiB [ ] config-5.13.0-25-generic
252.0 KiB [ ] config-5.11.0-46-generic
184.0 KiB [ ] memtest86+_multiboot.bin
184.0 KiB [ ] memtest86+.elf
180.0 KiB [ ] memtest86+.bin
16.0 KiB [ ] /lost+found
4.0 KiB [ ] /efi
0.0 B [ ] initrd.img.old
0.0 B [ ] initrd.img
0.0 B [ ] vmlinuz.old
0.0 B [ ] vmlinuz
Mas, a resposta mínima aceitável será algo assim:
100.2 MiB /boot/initrd.img-5.13.0-28-generic
100.2 MiB /boot/initrd.img-5.13.0-27-generic
11.2 MiB /boot/vmlinuz-5.11.0-46-generic
9.7 MiB /boot/vmlinuz-5.13.0-28-generic
9.7 MiB /boot/vmlinuz-5.13.0-27-generic
9.7 MiB /boot/vmlinuz-5.13.0-25-generic
8.0 MiB /boot/grub
5.7 MiB /boot/System.map-5.13.0-28-generic
5.7 MiB /boot/System.map-5.13.0-27-generic
5.7 MiB /boot/System.map-5.13.0-25-generic
5.6 MiB /boot/System.map-5.11.0-46-generic
252.0 KiB /boot/config-5.13.0-28-generic
252.0 KiB /boot/config-5.13.0-27-generic
252.0 KiB /boot/config-5.13.0-25-generic
252.0 KiB /boot/config-5.11.0-46-generic
184.0 KiB /boot/memtest86+_multiboot.bin
184.0 KiB /boot/memtest86+.elf
180.0 KiB /boot/memtest86+.bin
16.0 KiB /boot/lost+found
4.0 KiB /boot/efi
0.0 B /boot/initrd.img.old
0.0 B /boot/initrd.img
0.0 B /boot/vmlinuz.old
0.0 B /boot/vmlinuz
Isso fornece a resposta mínima aceitável , de acordo com a pergunta:
Exemplo de uso, de acordo com o exemplo da pergunta (mas transformado em um comando "de uma linha" para que eu possa copiá-lo e colá-lo no terminal sem criar um script de arquivo executável para ele):
Exemplo de saída para stdout:
Referências:
sort -h
poderia lidar com a classificação por tamanhos legíveis por humanos, como9.7 MiB
vs100 KiB
.Veja também:
sort -h
pode classificar a saída legível por humanosdu -h
Pequeno
python
script que lê dencdu -o-
:read_ncdu.py
:Você pode querer melhorar o script:
dsize
(tamanho do disco) em vez dissoasize
(tamanho aparente) se quiser, ou introduza argumentos no script para deixar o usuário decidir.os.walk()
em vez de usarncdu -o-
input.Veja também aqui para explicação do
ncdu
formato de saída json.Corre:
Torne
read_ncdu.py
executável -->chmod +x read_ncdu.py
, então você pode executar:Resultado:
du fornece a opção -ah, alternativamente, você pode usar o comando df com a opção -h para obter dados da porcentagem de espaço usado que você pode interpretar via script.
para classificar você pode usar o conselho mostrado neste post serverurfault. https://serverfault.com/questions/62411/how-can-i-sort-du-h-output-by-size
sort
Do manual GNU :-h, --human-numeric-sort compare human readable numbers (e.g., 2K 1G)