Estou condicionado ao ll
comando que é aliased para ls -alF
. Está faltando apenas uma contagem de arquivos e tamanho dos arquivos na parte inferior. Eu joguei com du
e tree
mas não consegui obter os totais que eu precisava. Então eu criei lll
para fazer isso por mim.
Em seu ~/.bashrc
coloque o seguinte:
lll () { ls -alF "$@" arr=($(ls -alF "$@" | awk '{TOTAL+=$5} END {print NR, TOTAL}')) printf " \33[1;31m ${arr[0]}\33[m line(s). " printf "Total size: \33[1;31m ${arr[1]}\33[m\n"# printf "Total size: \33[1;31m $(BytesToHuman <<< ${arr[1]})\33[m\n"}
Salve o arquivo e resource-lo usando . ~/.bashrc
(ou você pode reiniciar seu terminal).
Saída da amostra
A coisa boa sobre ll
a saída é que são cores. Isso é mantido com lll
mas perdido ao usar find
ou du
:
TL; DR
Uma função de bônus que você pode adicionar a ~/.bashrc
é chamado BytesToHuman()
. Isso faz o que a maioria dos usuários de console esperaria converter grandes números em MiB, GiB, etc:
function BytesToHuman() { # https://unix.stackexchange.com/questions/44040/a-standard-tool-to-convert-a-byte-count-into-human-kib-mib-etc-like-du-ls1/259254#259254 read StdIn b=${StdIn:-0}; d=''; s=0; S=(Bytes {K,M,G,T,E,P,Y,Z}iB) while ((b > 1024)); do d="$(printf ".%02d" $((b % 1024 * 100 / 1024)))" b=$((b / 1024)) let s++ done echo "$b$d ${S[$s]}"} # BytesToHuman ()
Em seguida, vire o comentário entre duas linhas em lll ()
função para se parecer com isso:
# printf "Total size: \33[1;31m ${arr[1]}\33[m\n" printf "Total size: \33[1;31m $(BytesToHuman <<< ${arr[1]})\33[m\n"
Agora sua saída se parece com isso:
Como sempre, não se esqueça de re-fonte com . ~/.bashrc
sempre que fizer alterações. (Ou reinicie o terminal, é claro)
PS - duas semanas em auto-quarentena finalmente me deram tempo para trabalhar neste objetivo de cinco anos.