#bash #shell #unix #command-line
#bash #оболочка #unix #командная строка
Вопрос:
У меня есть каталоги и вложенные каталоги, которые содержат изображения (525 изображений вместе в 15 папках).
Раньше я tree -Csh
перечислял их и получал;
Что я пытаюсь сделать сейчас, так это отсортировать их по размеру, потому что я пытаюсь быстро увидеть, какие файлы слишком малы (для веб-сайта с изображениями с высоким разрешением). Как вы можете видеть, на этом рисунке есть 774K jpg, который слишком мал, но отсортирован так, что их трудно выделить (полный вывод очень длинный). Является ли дерево лучшим способом для этого?
Ответ №1:
Используя инструменты GNU, из родительского каталога:
find . -type f -iname '*.jpg' -printf '%s %p' | sort -z -k1,1rn | xargs -0 -n1
find . -type f -iname '*.jpg' -printf '%s %p'
находит все.jpg
файлы (без учета регистра) и выводит размер файла в байтах в качестве первого поля и имя файла в качестве второго поля, при этом каждая запись разделяется нулем, это требуется для обработки имен файлов с новыми строками в нихsort -z -k1,1rn
сортирует записи, разделенные NUL, на основе первого поля численно, в обратном порядке, чтобы имена файлов с большими размерами отображались вверхуxargs -0 -n1
печатает имена файлов с уменьшением размера
Комментарии:
1. Спасибо за этот ответ. Это работает, как вы сказали. Как мне теперь изменить размер файла, чтобы он отображался более удобным для чтения человеком? Как что-то вроде 2,3 Мб? Я понимаю, что это нужно сделать после сортировки, потому что это нарушает порядок!