Încerc să obțin dimensiunea totală a celor cinci fișiere cele mai mari ale mele găsite într-un director, dar nu pot lucra la lista mea. Am două moduri de a găsi și sortare, cele cinci cele mai mari fișiere.
#!/bin/bash
DIR=$1 #Calea directorului de pornire
dacă [ ! -d "$DIR" ]; atunci #dacă directorul nu este găsit
echo "Directorul nu există!"
iesirea 1
fi
echo „Cinci cele mai mari fișiere care folosesc ls sunt:”
test_ls=$( ls -lhR "$DIR" | grep '^-' | sortare -r -k 5 -h | cap -n 5 )
du -ch „$test_ls”
echo „Cinci cele mai mari fișiere care folosesc find/DU sunt:”
test_find=$( găsiți "$DIR" -type f -exec du -ch {} + | sort -rh | head -n 5 )
du -ch „$test_find”
echo "Numărul total de fișiere: "
ls -lhR „$DIR” | grep '^-' | wc -l
echo "Dimensiunea totală a fișierelor: "
du -sh „$DIR” | awk '{print $1}'
Dacă aplic du pe variabila ls, obțin:
du: opțiune nevalidă -- 'r'
du: opțiune nevalidă -- 'w'
du: opțiune nevalidă -- '-'
du: opțiune nevalidă -- 'r'
iar dacă îl aplic pe variabila find, primesc acest lucru pentru fiecare dintre cele cinci fișiere
du: nu poate accesa „429M”: Nu există un astfel de fișier sau director
Atât versiunea ls, cât și versiunea find funcționează bine pentru a enumera cele mai mari cinci fișiere din directorul dat, dar sunt foarte pierdut în modul în care le-aș putea adăuga dimensiunile împreună.