Assumindo que por tamanho , você quer dizer o uso de disco de arquivos não-diretório ou o uso cumulativo de todos os arquivos referenciados através dos arquivos de diretório (como seu uso de du
sugere), com utilitários GNU, você poderia fazer:
sudo LC_ALL=C du -al0d1 /etc |
sort -zrn |
tail -zn+2 |
head -zn1 |
cut -zf2- |
tr 'sudo LC_ALL=C du -al0d1 /etc |
sort -zrn |
tail -zn+2 |
head -zn1 |
cut -zf2- |
tr '%pre%' '\n'
' '\n'
O tail
+ head
+ cut
também pode ser substituído por sed -z $'1d;s/^[^\t]*\t//;q'
.
Notas:
- com
du /etc/ -hsx *
(que assume o GNUfind
e quePOSIXLY_CORRECT
não está no ambiente porque você está usando opções após argumentos não opcionais), você está obtendo o disco uso de/etc
e de todos os arquivos não ocultos no diretório atual . - usando
-a
e-d1
(uma extensão GNU) resolve todos os problemas de*
excluindo diretórios ocultos ou atingindo o limite de número de argumentos. -
-h
não é apenas não-portátil, mas você também perde muita precisão (provavelmente fará com que você relate o arquivo errado), e torna o trabalhosort
mais difícil, por isso é bastante contraproducente. - sem
-l
(extensão GNU), os links físicos são contados apenas uma vez, portanto, sesome-large-file
for encontrado como/etc/dir1/some-large-file
e/etc/dir2/other-link-to-some-large-file
, o espaço em disco ocupado porsome-large-file
será contabilizado apenas como um esses diretórios pordu
. - a nova linha é um caractere tão válido quanto qualquer outro em um nome de arquivo (o macOS costumava usar nomes de arquivos com caracteres de nova linha em
/etc
IIRC). Então, geralmente você não pode usar processamento de texto baseado em linha para lidar com isso. A maioria dos utilitários GNU tem-z
ou-0
opções para trabalhar com registros delimitados por NUL. - Observe que, nessa lista classificada, o primeiro registro será de
/etc
. Então, pegando o segundo registro, na verdade estamos reportando o arquivo / dir mais pesado em/etc
, não o segundo mais pesado. - Se houver empates, o nome do arquivo que classifica por último na ordem de intercalação de localidade será escolhido por meio da comparação de último recurso feita por
sort
sem-s
.