-
Acho que, quando o tamanho está entre 10 K e 99 K (digamos, por exemplo, 42 K), os primeiros cinco caracteres da saída são
4
2
K
(tab)/
(assumindo que o argumento do nome do caminho começa com
/
- qual será, se você estiver especificando um argumento que comece com~
). Então essa será a saída decut -c 1-5
:42K /
. (Eu presumo quennM
ennG
terá o mesmo problema.) Faz mais sentido usarcut -f1
para obter o primeiro campo da saída, em vez dos cinco primeiros caracteres. - O que acontece se você tiver um nome de diretório que inclua a palavra
total
? Dica: ele passará pelogrep
. Em vez de terdf
, gere os dados para cada subdiretório, e depois tergrep
jogando fora, Faz mais sentido terdf
gerando apenas o total. Como RomanPerekhrest aponta , você pode fazer isso especificando a opção-s
. -
Como dmgnx aponta , depois que você tiver o número (terminando com
K
,M
ouG
), tudo que você precisa fazer é anexar oB
. Então, minha solução composta éecho "$(du -sh ~/.Trash | cut -f1)B"
-
Oops! Eu não notei que você queria adicionar um espaço entre o número e as unidades. OK, então você precisa de
sed
(ou algo similar):du -sh ~/.Trash | cut -f1 | sed 's/[KMG]$/ &B/'
ou talvez apenas
du -sh ~/.Trash | sed 's/^\([0-9.]*\)\([KMG]\).*$/ B/'
(usando
sed
para descartar o nome do diretório, e eliminando ocut
ao todo).