it-swarm-ko.tech

크기별로 정렬 된 모든 파일을 나열하는 방법

모든 파일을 크거나 작은 순서로 나열하고 파일이 특정 폴더의 어느 곳에 나 존재할 수 있습니다.

268
Joe

단순히 다음과 같은 것을 사용하십시오 :

ls -lS /path/to/folder/

대문자 [~ # ~] s [~ # ~] .

파일을 크기별로 정렬합니다.

참조 :

man ls

-S     sort by file size

reverse 순서로 정렬하려면 -r 스위치를 추가하십시오.

업데이트 :

디렉토리를 제외 시키려면 (파일 이름 또는 symlink 대상에 개행 문자가 포함되어 있지 않은 경우) :

ls -lS | grep -v '^d' 

업데이트 2 :

이제 폴더가 될 수있는 심볼릭 링크가 어떻게 표시되는지 확인합니다. 심볼릭 링크는 항상 링크에서와 같이 문자 l로 시작합니다.

-를 필터링하도록 명령을 변경하십시오. 일반 파일 만 남겨 두어야합니다.

ls -lS | grep '^-'

내 시스템에서는 일반 파일 만 표시됩니다.

업데이트 3 :

재귀를 추가하려면 줄 정렬을 sort 명령에두고 5 번째 열을 사용하여 정렬하도록 지시합니다.

ls -lR | grep '^-' | sort -k 5 -rn

-rn는 가장 큰 파일을 맨 위에 가져 오려면 Reverse 및 numeric을 의미합니다. 이 명령의 단점은 파일의 전체 경로를 표시하지 않는다는 것입니다.

파일의 전체 경로가 필요한 경우 다음과 같이 사용하십시오.

find . -type f  -exec du -h {} + | sort -r -h

find 명령은 .의 모든 하위 디렉토리에서 모든 파일을 재귀 적으로 찾고 du -h (disk usage -humanreadable)를 호출합니다. 출력을 다시 정렬하십시오. find/sort에서 -h를 지원하지 않으면 du -ksort -rn로 바꾸십시오. sizedisk usage는 같은 것이 아닙니다.

308
delh

찾기 및 정렬과 같은 것을 사용할 수 있습니다.

find . -type f -ls | sort -r -n -k7

(-ls 옵션은 표준이 아니지만 GNU 하나뿐만 아니라 많은 find 구현에서도 발견됩니다. GNU find 및 기타에서는 ls -li 예를 들어, ACL이있는 파일은 +로 표시되지 않습니다)

파일 이름에 줄 바꿈 문자가 포함 된 경우 GNU 찾기 및 GNU 정렬) :

find . -type f -ls -printf '\0' | sort -zk7rn | tr -d '\0'
26
Mark Cohen

Zsh 및 GNU ls :

ls -ldU -- **/*(.OL)

어디 (.OL) 글로브 한정자 , . 일반 파일 만 선택하고 OL는 길이 순서 (파일 크기, o)를 오름차순으로 역순으로 선택합니다. , O 내림차순).

(이전 버전의 zsh는 파일 크기가 2 ^ 32보다 큰 문제가있었습니다).

일부 운영 체제에는 명령에 전달 된 인수 목록의 크기에 제한이 있습니다. 이 경우 다음이 필요합니다.

autoload -U zargs
zargs ./**/*(.OL) -- ls -ldU

자세한 출력이 아닌 파일 목록 만 원한다면 다음을 수행하십시오.

print -rl -- **/*(.OL)

숨겨진 파일을 포함 시키려면 (이름이 점으로 시작하고 ...) 및 숨겨진 디렉토리에서도 검색하고 D globbing 한정자를 추가하십시오.

print -rl -- **/*(.DOL)
10
Stéphane Chazelas

크기 오름차순으로 파일을 나열하면 다음과 같습니다.

ls -lSr

옵션은 다음과 같습니다.

  • l : 길고 자세한 사용자, 그룹, 기타 속성, 날짜 등을 표시합니다.
  • S : 크기별 주문 목록 (기본적으로 내림차순)
  • r : 리스팅 순서를 반대로
9
Baker

"파일이 특정 폴더의 어느 곳에 나있을 수있다"는 말은 시작 디렉토리 (폴더) 내의 모든 디렉토리 (폴더)를 재귀 적으로 내림차순으로한다는 것을 의미합니다. 이것이 find의 의미입니다 :

find . -type f -exec ls -lSd {} +

이것은 현재 작업 디렉토리에서 모든 files를 "찾습니다"(.). 발견 된 각 파일에 대해 ls 프로세스가 실행되어 발견 된 오브젝트를 크기 순서로 정렬합니다. + 종료자를 -exec은 여러 인수가 ls에 목록으로 전달되도록합니다. 디렉토리 (폴더)에 매우 많은 수의 파일이 포함되어 있지 않은 경우 하나의 목록 (따라서 하나의 프로세스가 포크 됨)이 있어야 원하는 결과를 얻을 수 있습니다.

7
JRFerguson

이것들을보십시오, 그것은 나에게 잘 작동합니다.

$ find /home/san -type f -printf '%s %p\n'| sort -nr | head -n 10

# find /root -type f -exec ls -lS {} + | head -n 10 | awk '{ print $5, $9 }'

완벽한 답변은 아니지만 어느 정도 작동합니다.

$ ls -lS |grep  '^-' | head -n 6 
4
Sand1512

파일 목록은 역순으로 표시됩니다. ls -lSrh

오름차순 : ls -lSh

4
user174839

나는 얼마 전까지이 정도로 무언가를 썼다. 나열 할 파일 수를 지정하는 인수를 전달하거나 big를 입력하면 10이됩니다.

big () { 
    NUM_FILES=10;
    if [ $1 ]; then
        NUM_FILES=$1;
    fi;
    du | sort -nr | head -n $NUM_FILES
}
2
Emanuel Berg

Delh의 답변과 Stéphane Chazelas의 의견에 추가 ...

find -print0xargs -0는 공백/공백/무엇에 대한 지원을 추가합니다.

du -h | sort -rn은 다른 바이트 배수 사이에서 올바르게 정렬되지 않습니다 (예 : 1.1M은 128K 이후에 표시됩니다.

sort -rh (--human-numeric-sort)가이를 처리하지만 GNU 버전에서만 작동합니다.

아래 명령은 원하는 출력을 제공합니다.

사람이 읽을 수있는 GNU의 종류/리눅스 :

find . -type f -print0 | xargs -0 du -h | sort -rh

킬로바이트 단위, BSD/OSX/기타 :

find . -type f -print0 | xargs -0 du -k | sort -rn

BSD/OSX의 경우 https://unix.stackexchange.com/a/188375/82895 도 참조하십시오.

1
djule5