Мне нужно найти самые большие файлы в папке.
Как рекурсивно сканировать папку и сортировать содержимое по размеру?
Я пытался использовать ls -R -S
, но это список каталогов, а также.
Я также пытался использовать find
.
command-line
find
ls
user2179293
источник
источник
Ответы:
Вы также можете сделать это просто
du
. Просто чтобы быть в безопасности, я использую эту версиюdu
:Подход:
Разбивка подхода
Команда
du -ah DIR
выдаст список всех файлов и каталогов в данном каталогеDIR
.-h
Будет производить читаемые размеры человека , которые я предпочитаю. Если вы не хотите их, тогда отпустите этот переключатель. Я используюhead -6
только, чтобы ограничить количество продукции!Достаточно просто отсортировать от наименьшего к большому:
Переверните его, от самого большого до самого маленького:
Не показывайте мне каталог, только файлы:
Если вы просто хотите, чтобы список от самого маленького к самому большому, но из шести самых вредных файлов вы могли поменять переключатель сортировки, drop (
-r
) и использоватьtail -6
вместоhead -6
.источник
grep -v "/$"
часть, кажется, не выполняет то, что вы ожидали, так как в каталогах нет косой черты. Кто-нибудь знает, как исключить каталоги из результатов?/
s - например,/home/saml/Downloads/audible
кажется, что это каталог, но у него нет косой черты./home/saml/Downloads/
Имеет только косую черту, но это, вероятно, потому, что вы указали косую черту при указании аргумента для начальногоdu
.Если вы хотите найти все файлы в текущем каталоге и его подкаталогах и перечислить их в соответствии с их размером (без учета их пути), и при условии, что ни одно из имен файлов не содержит символов новой строки, с помощью GNU
find
вы можете сделать это:В
man find
системе GNU:От
man sort
:источник
Попробуйте следующую команду:
Он будет рекурсивно перечислять 20 самых больших файлов в текущем каталоге.
Примечание. Параметр
-h
forsort
недоступен в OSX / BSD, поэтому необходимо установитьsort
сcoreutils
(например, черезbrew
) и применить локальный путь кPATH
бину, например,Альтернативно используйте:
Для самых больших каталогов используйте
du
, например:или же:
источник
Это позволит найти все файлы рекурсивно и отсортировать их по размеру. Он распечатывает файлы всех размеров в килобайтах и округляет их, чтобы вы могли видеть файлы размером 0 КБ, но он был достаточно близок для моего использования и работает на OSX.
find . -type f -print0 | xargs -0 ls -la | awk '{print int($5/1000) " KB\t" $9}' | sort -n -r -k1
источник
find . -type f
находит файлы ... он работает рекурсивно, вы правы, но в нем перечислены все файлы, которые он находит, а не сами каталогиС помощью
zsh
вы найдете самый большой файл (с точки зрения видимого размера, например, размер столбца вls -l
выводе, а не использования диска) сДля 6 крупнейших:
Для сортировки тех , по размеру файла, вы можете использовать
ls
«ы-S
вариант. Некоторыеls
реализации также имеют-U
возможностьls
не сортировать список (так как он уже отсортирован по размеруzsh
).источник
Простое решение для Mac / Linux, которое пропускает каталоги:
источник
Эквивалент в
BSD
илиOSX
внеисточник
Это невероятно общая потребность по разным причинам (мне нравится находить самую последнюю резервную копию в каталоге), и это удивительно простая задача.
Я собираюсь представить решение Linux, которое использует утилиты find, xargs, stat, tail, awk и sort.
Большинство людей предоставили несколько уникальных ответов, но я предпочитаю свои, потому что он правильно обрабатывает имена файлов, и вариант использования может быть легко изменен (изменить статистику и отсортировать аргументы)
Я также предоставлю решение Python, которое позволит вам использовать эту функциональность даже в Windows
Linux решение для командной строки
Рекурсивно вернуть весь список только файлов из каталога, отсортированный по размеру файла
То же, что и раньше, но на этот раз верните самый большой файл.
Тот же самый шаблон, но теперь выберите самый новый файл вместо самого большого
Объяснение:
Решение Python
Этот сценарий требует немного больше времени для объяснения, но, по сути, если вы сохраните его как сценарий, он выполнит поиск по первому аргументу, указанному в командной строке, и вернет самый большой файл в этом каталоге. Скрипт не проверяет ошибки, но он должен дать вам представление о том, как подойти к этому в Python, который дает хороший платформо-независимый способ решения этой проблемы.
источник
Вариант этого ответа от аналогичного вопроса
источник
Попробуйте команду ниже с опцией сортировки, чтобы иметь папки с размером в порядке возрастания
du -sh * | sort -sh
источник
То, что работает на любой платформе, кроме AIX и HP-UX:
источник