Unix 서버에서 파일을 찾아 크기별로 정렬

Unix 서버에서 파일을 찾아 크기별로 정렬

웹 서버가 있지만 공간이 부족하여 문제가 발생합니다.워드프레스제가 운영하고 있는 웹사이트입니다.

나는 큰 .png 파일을 많이 가지고 있다는 것을 알고 있습니다(실제로는파푸아 뉴기니그 자체로는 실수이지만 이에 대해서는 다루지 않겠습니다.)

PNG 목록을 얻고 싶습니다.JPEG파일을 서버에 저장하고 크기를 줄여 정렬합니다. 을 사용할 수 있다는 것을 알고 있지만 ls -SlahR정렬은 폴더별로 이루어집니다.

find . -name "*.png" | xargs -i -n1 ls -lah {}그런 다음 (a) 줄을 정렬하지 않고 (b) 내가 실제로 신경 쓰지 않는 파일 권한과 소유권을 표시한다는 점을 제외하고 어느 것이 괜찮은지 알아냈습니다 .

그럼 더 좋은 게 있나요? [크기] [파일 경로]를 생성하는 것?

답변1

find(GNU)를 사용하면 모든 작업을 수행할 수 있으며 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

답변2

find다음과 같이 du, 및 를 조합 하여 사용할 수 있습니다 .sort

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

(대소 문자를 구분하지 않음)으로 <directory>끝나는 모든 일반 파일을 검색합니다. 그런 다음 결과는 .png각 개별 파일에 대한 xargs호출로 전달되어 du해당 크기를 바이트 단위로 가져오고( Due -b) sort결과를 숫자로 정렬( -n)하고 결과를 파일 크기별로 내림차순으로 정렬 -r( )합니다. -print0결과를 분리하여 공백이나 개행과 같은 이상한 문자가 포함된 경로를 가질 수 있습니다.\0\n

답변3

가장 호환되는 버전이 필요한 경우 일반 찾기 및 정렬을 사용하여 수행할 수 있습니다(printf와 같은 GNU 확장에 의존하지 않음).

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

-k7,7:sort the columns 7 to 7(즉, 7개만) (...이것은 -ls 출력 크기(바이트 단위)가 이전 시스템의 다른 열에서 발견되는 경우 사용자가 열 번호를 변경할 수 있도록 허용하는 매개변수여야 합니다.

관련 정보