Ao fazer o processamento automatizado, não torne sua vida mais complicada usando números em unidades diferentes. Não passe -h
para du
. Em seguida, você pode usar a classificação numérica simples na saída e seu script ainda funcionará se você tiver mais de 1 TB em um dos diretórios.
du -s ~/* | sort -k 1n | tail -n1
Isso sempre imprime uma linha, mesmo que o maior subdiretório contenha menos de 1 GB. Se não é isso que você quer, você pode substituir a condicional "é a saída vazia" por "é o número menor que o limite".
Para extrair o nome do diretório, pegue a saída e remova a peça para a primeira guia.
largest_directory=$(du -s ~/* | sort -k 1n | tail -n1)
largest_directory_size_kB=${largest_directory%%$(printf '\t')*} # if you need the size
largest_directory=${largest_directory#*$(printf '\t')}