찾기 출력의 ls -lS는 출력을 정렬하지 않습니다.

찾기 출력의 ls -lS는 출력을 정렬하지 않습니다.

아시다시피 ls -S모든 파일은 크기별로 정렬되어 나열됩니다.

내가 원하는 것은 /usr디렉토리의 모든 파일을 크기별로 정렬하여 나열하는 것입니다. 그래서 다음 명령을 실행했습니다.

find /usr -type f -exec ls -lS {} \;

그러나 이 명령은 크기별로 정렬된 모든 파일을 나열하지 않는 것 같습니다. -S여기서는 작동하지 않습니다.

답변1

명시적으로 파일( ) 검색을 요청했으며 find파일을 찾으면 해당 -type f파일에서 실행하도록 요청했습니다. 이 문제를 해결하기 위해 ls -lSGNU 찾기 확장을 사용하여 여러 개의 일치하는 파일을 한 번에 전달할 수도 없습니다 . 동시에 전달할 +파일이 너무 많을 수 있기 때문입니다 .ls

대신 GNU find를 사용하여 파일 크기와 파일 이름을 인쇄하도록 요청한 다음 이를 sort모두 null로 구분하여 에 전달합니다.

find /usr -type f -printf "%s %p\n\0"|sort -zn

예제 출력:

0 /usr/lib/python2.7/dist-packages/pkg_resources/_vendor/__init__.py
0 /usr/lib/python2.7/dist-packages/python_debian-0.1.30.egg-info/requires.txt
0 /usr/lib/python2.7/email/mime/__init__.py
... output omitted ...
24013304 /usr/lib/gcc/i686-linux-gnu/6/cc1plus
25675008 /usr/lib/i386-linux-gnu/libicudata.so.57.1
49547156 /usr/lib/i386-linux-gnu/libLLVM-3.9.so.1

답변2

출력 형식을 원하면 ls -l다음을 사용할 수 있습니다.

find . -type f -exec ls -l {} \;|sort -n -k5

견본

$ find . -type f -exec ls -l {} \;|sort -n -k5
-rw-rw----+ 1 utsav utsav 0 Mar  6 02:23 ./file5.txt
-rw-rw----+ 1 utsav utsav 12 Mar  6 01:57 ./a.txt
-rw-rw----+ 1 utsav utsav 15 Mar  6 02:10 ./foo.txt
-rw-rw----+ 1 utsav utsav 15 Mar  6 02:11 ./c.txt
-rw-rw----+ 1 utsav utsav 27 Mar  6 01:57 ./b.txt

관련 정보