Вывод результатов команды du в алфавитном порядке
Как я могу перечислить результаты du
команда в алфавитном порядке?
Я знаю, что могу использовать find
команда, чтобы перечислить их в алфавитном порядке, но без размера каталога, я также использую -maxdepth
опция для обеих команд, чтобы листинг шел только в один подкаталог.
Вот вопрос курсивом:
Напишите сценарий оболочки, который реализует анализатор размера каталога. В вашем скрипте вы можете использовать общие команды Linux. Сценарий должен перечислить дисковое хранилище, занимаемое каждым непосредственным подкаталогом данного аргумента или текущим каталогом (если аргумент не указан) с именами подкаталогов, отсортированными в алфавитном порядке. Кроме того, укажите имя подкаталога с наибольшим использованием диска вместе с его размером хранилища. Если более одного подкаталога имеют одинаковое наибольшее использование диска, перечислите любой из этих подкаталогов. Включить содержательные краткие комментарии. Список команд bash, применимых к этому сценарию, включает следующее, но не ограничивается: 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
Еще раз, у меня проблемы с сортировкой результатов по алфавиту.
2 ответа
Попробуйте сделать это:
du $dir -hk --max-depth=2 | sort -k2
-k2
это столбец № 2
Смотрите http://www.manpagez.com/man/1/sort/
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