Как показать список файлов от некоторого корня каталога, отсортированного в порядке по убыванию размера файла из командной строки?
От Вашей папки:
find . -maxdepth 1 -type f -exec du -h {} + | sort --human-numeric-sort --reverse
можно установить, как глубоко это может искать файлы с -maxdepth
параметр или без него, чтобы быть рекурсивным.
Поскольку @Terrance сказал, ls -lS
файлы видов в порядке убывания. Для всех файлов, ls -lSa
работы.
Достаточно использовать du
и sort
du --max-depth 1 * | sort -n -k1
Пример вывода,
$ du --max-depth 1 * | sort -n -k1
4 bin/CS-1400
4 bin/csrc
4 bin/DIR@YOLO
4 bin/EET2350
4 bin/HW6
4 RS232Functions.c
4 RS232Functions.c~
4 Untitled Folder
8 1204686.docx_en-US_zh-CN.docx
8 bin/shell
16 MSUDenver_50th_Formal.png
20 bb0239ba-1718-4778-b19a-3826f36a95cd.png
20 mainLogo.png
24 bin/NAME WITH SPACES
32 bin/ala
32 bin/Online_book
60 bin/HORTON
72 bin/JAVA-OTHER
Если Вы хотите перечислить все в каталоге рекурсивно, используйте также find
или du
с sort
:
find /some/path -type f -printf '%s %p\n' | sort -rn
du -h /some/path | sort -rh
Первый покажет только файлы и размер в байтах. Последний покажет и файл и кумулятивные размеры каталога, в человекочитаемом (использование КБ, МБ, и т.д.) формат. sort
соответственно использование, числовое для первого (-n
) и человекочитаемый для последнего (-h
).
С большей сложностью наилучший вариант был бы:
find /some/path -type f -print0 | du --files0-from=- -0h | sort -rzh | tr '\0' '\n'
du
может прочитать NUL-разграниченный список файлов от входа, и find
может распечатать NUL-разграниченное использование имен файлов -print0
. sort
может затем взять NUL-разграниченный список размеров и имен файлов и отсортировать их, и наконец Вы заменяете NULs новыми строками для удобного дисплея.
Так как имена файлов и пути могут содержать что-либо кроме символа ASCII NUL, использование NUL-разграниченных строк будет, обрабатывая их быть самым безопасным путем.
Можно также добраться find
распечатать размер, как замечено в первой команде, но с -printf '%s %p\0'
все еще использовать NUL-разграниченные строки и использование пропуска du
как средний человек.
Эта команда отсортирует по размеру в Кбите
du -sk * | sort -n
Можно инвертировать его с:
du -sk * | sort -rn