![Use du para listar o tamanho das 20 maiores pastas/arquivos no diretório atual recursivamente em bytes e formato legível por humanos](https://rvso.com/image/154457/Use%20du%20para%20listar%20o%20tamanho%20das%2020%20maiores%20pastas%2Farquivos%20no%20diret%C3%B3rio%20atual%20recursivamente%20em%20bytes%20e%20formato%20leg%C3%ADvel%20por%20humanos%20.png)
Poucas coisas a serem alcançadas 1. Obtenha recursivamente as 20 maiores pastas/arquivos 2. Obtenha seus tamanhos em bytes, bem como em formato legível por humanos
Responder1
#!/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