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

У меня есть веб-сервер, на котором у меня закончилось свободное пространство, и это вызывает проблемы с сайтами WordPress, на которых я запущен.

Я знаю, что у меня много больших файлов .png (факт, что это PNG, является ошибкой сам по себе, но давайте не будем в этом разбираться).

Я хотел бы получить список PNG или файлов JPEG, которые находятся на сервере, и отсортировать их, уменьшив размер. Я знаю, что могу использовать ls -SlahR , но сортировка выполняется на основе каждой папки.

Затем я придумал find . -name "*.png" | xargs -i -n1 ls -lah {} find . -name "*.png" | xargs -i -n1 ls -lah {} find . -name "*.png" | xargs -i -n1 ls -lah {} который в порядке, за исключением того, что (а) он не сортирует строки и (б) он показывает разрешения и владельцы файлов, о которых мне было бы все равно.

Так что-то лучше? Что-то, что создавало бы [size] [path_to_file]?

Вы можете использовать комбинацию find , du и вроде следующего:

 find <directory> -iname "*.png" -type f -print0 | xargs -0 -n1 du -b | sort -n -r 

Это ищет все обычные файлы в <directory> заканчивающиеся на .png (без учета регистра). Затем результат передается в xargs который вызывает du с каждым отдельным файлом, получая его размер в байтах (из-за -b ) и передается в sort , который сортирует результат численно ( -n ) по размеру файла в порядке убывания ( -r ). -print0 используется для разделения результатов на \0 вместо \n , поэтому вы можете иметь пути со странными символами, такими как пробелы и символы новой строки.

Вы можете просто сделать все с помощью (GNU) find и sort , не нужно du :

 $ find . -iname '*png' -printf '%s %p\n' | sort -rn 68109 ./7.png 21751 ./2.png 21751 ./1.png 5393 ./6.png 2542 ./5.png 1717 ./4.png 1003 ./3.png 878 ./10.png 793 ./9.png 587 ./8.png 

И на всякий случай, когда вам нужна самая совместимая версия, вы можете сделать это с помощью регулярной находки и сортировки (не полагайтесь на расширения gnu, такие как printf):

find . -ls | grep -i -e '\.png$' -e '\.jpe*g' | sort -k7,7nr

-k7,7 : Сортировка по столбцам с 7 to 7 (т. е. только 7) (… это должен быть параметр, позволяющий изменять номер столбца в случае, если на их старой системе найти -l, вывести размеры в байтах на другой колонка)