Показ размеров файла в отсортированном порядке

Как показать список файлов от некоторого корня каталога, отсортированного в порядке по убыванию размера файла из командной строки?

8
задан 9 March 2016 в 11:29

5 ответов

От Вашей папки:

find . -maxdepth 1 -type f -exec du -h {} + | sort --human-numeric-sort --reverse

можно установить, как глубоко это может искать файлы с -maxdepth параметр или без него, чтобы быть рекурсивным.

4
ответ дан 23 November 2019 в 05:43

Поскольку @Terrance сказал, ls -lS файлы видов в порядке убывания. Для всех файлов, ls -lSa работы.

1
ответ дан 23 November 2019 в 05:43

Достаточно использовать 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
0
ответ дан 23 November 2019 в 05:43

Если Вы хотите перечислить все в каталоге рекурсивно, используйте также 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 как средний человек.

3
ответ дан 23 November 2019 в 05:43

Эта команда отсортирует по размеру в Кбите

du -sk * | sort -n

Можно инвертировать его с:

du -sk * | sort -rn
0
ответ дан 23 November 2019 в 05:43

Другие вопросы по тегам:

Похожие вопросы: