![Используйте du для рекурсивного вывода списка размеров 20 самых больших папок/файлов в текущем каталоге в байтах и формате, удобном для чтения человеком](https://rvso.com/image/154457/%D0%98%D1%81%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D1%83%D0%B9%D1%82%D0%B5%20du%20%D0%B4%D0%BB%D1%8F%20%D1%80%D0%B5%D0%BA%D1%83%D1%80%D1%81%D0%B8%D0%B2%D0%BD%D0%BE%D0%B3%D0%BE%20%D0%B2%D1%8B%D0%B2%D0%BE%D0%B4%D0%B0%20%D1%81%D0%BF%D0%B8%D1%81%D0%BA%D0%B0%20%D1%80%D0%B0%D0%B7%D0%BC%D0%B5%D1%80%D0%BE%D0%B2%2020%20%D1%81%D0%B0%D0%BC%D1%8B%D1%85%20%D0%B1%D0%BE%D0%BB%D1%8C%D1%88%D0%B8%D1%85%20%D0%BF%D0%B0%D0%BF%D0%BE%D0%BA%2F%D1%84%D0%B0%D0%B9%D0%BB%D0%BE%D0%B2%20%D0%B2%20%D1%82%D0%B5%D0%BA%D1%83%D1%89%D0%B5%D0%BC%20%D0%BA%D0%B0%D1%82%D0%B0%D0%BB%D0%BE%D0%B3%D0%B5%20%D0%B2%20%D0%B1%D0%B0%D0%B9%D1%82%D0%B0%D1%85%20%D0%B8%20%E2%80%8B%E2%80%8B%D1%84%D0%BE%D1%80%D0%BC%D0%B0%D1%82%D0%B5%2C%20%D1%83%D0%B4%D0%BE%D0%B1%D0%BD%D0%BE%D0%BC%20%D0%B4%D0%BB%D1%8F%20%D1%87%D1%82%D0%B5%D0%BD%D0%B8%D1%8F%20%D1%87%D0%B5%D0%BB%D0%BE%D0%B2%D0%B5%D0%BA%D0%BE%D0%BC%20.png)
Несколько вещей, которые нужно сделать: 1. Рекурсивно получить 20 самых больших папок/файлов 2. Получить их размеры в байтах, а также в удобном для чтения формате
решение1
#!/bin/bash
# ------------------------------------------
# Copy paste this content in a bash script e.g. ducks.sh
# And use it directly.
# ------------------------------------------
# Refer:
# https://www.cyberciti.biz/faq/linux-find-largest-file-in-directory-recursively-using-find-du/
# https://unix.stackexchange.com/a/220470/353485
function bytesToHR() {
local SIZE=$1
local UNITS="B KiB MiB GiB TiB PiB"
for F in $UNITS; do
local UNIT=$F
test ${SIZE%.*} -lt 1024 && break;
SIZE=$(echo "$SIZE / 1024" | bc -l)
done
if [ "$UNIT" == "B" ]; then
printf "%4.0f %s\n" $SIZE $UNIT
else
printf "%7.02f %s\n" $SIZE $UNIT
fi
}
du --block-size=1 --all ./ | sort -rn | head -n 20 > ./dump.txt
ALL_SIZES="`awk '{print $1}' ./dump.txt`"
# echo $ALL_SIZES
rm -f ./new_dump.txt
for s in $ALL_SIZES; do
bytesToHR $s >> ./new_dump.txt
done
paste ./new_dump.txt ./dump.txt