Я пытаюсь получить общий размер пяти самых больших файлов, найденных в каталоге, но мне не удается работать в моем списке. У меня есть два способа поиска и сортировки пяти самых больших файлов.
#!/бин/баш
DIR=$1 #Путь к начальному каталогу
если [ ! -d "$DIR" ]; то #если каталог не найден
echo "Каталог не существует!"
выход 1
фи
echo "Пять самых больших файлов, использующих ls:"
test_ls=$( ls -lhR "$DIR" | grep '^-' | sort -r -k 5 -h | head -n 5 )
du -ch "$test_ls"
echo "Пять самых больших файлов, использующих find/DU:"
test_find=$( find "$DIR" -type f -exec du -ch {} + | sort -rh | head -n 5 )
du -ch "$test_find"
echo "Общее количество файлов: "
ls -lhR "$DIR" | grep '^-' | туалет -л
echo "Общий размер файлов: "
du -sh "$DIR" | awk '{напечатать $1}'
Если я применяю du к переменной ls, я получаю:
du: недопустимая опция -- 'r'
du: недопустимая опция -- 'w'
du: недопустимая опция -- '-'
du: недопустимая опция -- 'r'
и если я применю его к переменной поиска, я получу это для каждого из пяти файлов.
du: невозможно получить доступ к «429M»: нет такого файла или каталога
И версия ls, и версия find отлично работают для перечисления пяти самых больших файлов в данном каталоге, но я действительно теряюсь в том, как я могу сложить их размеры вместе.