Few things to be achieved 1. Recursively get top 20 largest folders/files 2. Get their sizes in bytes as well as human readable format
Asked
Active
Viewed 677 times
-2
-
For `du` input arguments `-s` and `-a` don't go together. I want to use `-a` for finding all files, not just directories. – Rohan Ghige May 29 '19 at 06:04
-
Please edit your question to emphasise the differences, and what you specifically wanted to achieve. As it stands now, it's not very clear (which is presumably why someone downvoted it). And welcome to U/L! – Sparhawk May 29 '19 at 07:20
1 Answers
-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
Rohan Ghige
- 131
- 3