Я приучен к ll
команда, которая имеет псевдоним для ls -alF
. В нем просто отсутствует количество файлов и размер файлов внизу. Я играл с du
и tree
но не смог получить нужные мне итоговые данные. Поэтому я создал lll
чтобы сделать это для меня.
В вашем ~/.bashrc
разместите следующее:
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"}
Сохраните файл и выделите его с помощью . ~/.bashrc
(или вы можете перезапустить свой терминал).
Образец выходного сигнала
Самое приятное в том, что ll
результат - это его цвета. Это поддерживается с помощью lll
но теряется при использовании find
или du
:

ТЛ;Д-Р
Бонусная функция, которую вы можете добавить к ~/.bashrc
называется BytesToHuman()
. Это делает то, что ожидает большинство пользователей консоли, преобразуя большие числа в MiB, GiB и т.Д:
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 ()
Затем переверните комментарий между двумя строками в lll ()
функция должна выглядеть следующим образом:
# printf "Total size: \33[1;31m ${arr[1]}\33[m\n" printf "Total size: \33[1;31m $(BytesToHuman <<< ${arr[1]})\33[m\n"
Теперь ваш вывод выглядит следующим образом:

Как всегда, не забудьте обновить исходный код с помощью . ~/.bashrc
всякий раз, когда вносятся изменения. (Или, конечно, перезагрузите терминал)
PS - Две недели в карантине наконец-то дали мне время поработать над этой пятилетней целью.