Ответ 1
Попробуйте сделать это:
du $dir -hk --max-depth=2 | sort -k2
-k2
- номер столбца 2
Как я могу перечислить результаты команды du
в алфавитном порядке?
Я знаю, что могу использовать команду find
для их перечисления в алфавитном порядке, но без размера каталога, я также использую параметр -maxdepth
для обеих команд, чтобы список только спускался по одному подкаталогу.
Здесь вопрос выделен курсивом:
Напишите оболочку script, которая реализует анализатор размера каталога. В вашем script вы можете использовать общие команды Linux. script должен отображать дисковое хранилище, занятое каждым непосредственным подкаталогом данного аргумента или текущей директорией (если аргумент не указан) с именами подкаталогов, отсортированными в алфавитном порядке. Кроме того, укажите имя поддиректории с максимальным дисковым использованием вместе с его размером хранилища. Если несколько поддиректорий имеют одинаковое использование на диске, перечислите любой из этих подкаталогов. Включите осмысленные краткие комментарии. Список команд bash, применимых для этого script, включает следующие, но не ограничиваясь: cat, cut, du, echo, exit, for, head, if, ls, rm, sort, tail, wc. Вы можете использовать переменные bash, а также временные файлы для хранения промежуточных результатов. Удалите все временные файлы в конце выполнения.
Вот мой результат после ввода du $dir -hk --max-depth=2 | sort -o temp1.txt
, затем cat temp1.txt
в командной строке:
12 ./IT_PLAN/Inter_Disciplinary
28 ./IT_PLAN
3 ./IT_PLAN/Core_Courses
3 ./IT_PLAN/Pre_reqs
81 .
9 ./IT_PLAN/IT_Electives
Он должен выглядеть так:
28 ./IT_PLAN
3 ./IT_PLAN/Core_Courses
12 ./IT_PLAN/Inter_Disciplinary
9 ./IT_PLAN/IT_Electives
The subdirectory with the maximum disk space use:
28 ./IT_PLAN
Снова у меня возникли проблемы с сортировкой результатов по алфавиту.
Попробуйте сделать это:
du $dir -hk --max-depth=2 | sort -k2
-k2
- номер столбца 2
du $dir -hk --max-depth=2 |awk '{print $2"\t"$1}'|sort -d -k1 -o temp1.txt
и если вы хотите удалить./путь
du $dir -hk --max-depth=2 |awk '{print $2"\t"$1}'|sed -e 's/\.\///g'|sort -d -k1 -o temp1.txt