웹 서버가 있지만 공간이 부족하여 문제가 발생합니다.워드프레스제가 운영하고 있는 웹사이트입니다.
나는 큰 .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 출력 크기(바이트 단위)가 이전 시스템의 다른 열에서 발견되는 경우 사용자가 열 번호를 변경할 수 있도록 허용하는 매개변수여야 합니다.