모든 파일을 가장 큰 크기부터 가장 작은 크기 순으로 나열하고 파일은 폴더의 어느 곳에나 존재할 수 있습니다.
답변1
다음과 같은 것을 사용하십시오.
ls -lS /path/to/folder/
수도에스.
그러면 파일이 크기별로 정렬됩니다.
또한보십시오:
-S sort by file size
정렬하고 싶다면취소-r
명령을 내리면 스위치 만 추가하면 됩니다 .
고쳐 쓰다:
디렉터리를 제외합니다(그리고 파일 이름이나 심볼릭 링크 대상에 개행 문자가 포함되어 있지 않다고 가정합니다):
ls -lS | grep -v '^d'
업데이트 2:
이제 폴더인 심볼릭 링크가 여전히 표시되는 것을 확인했습니다. 링크에 표시된 것처럼 심볼릭 링크는 항상 문자 l로 시작됩니다.
명령을 filter 로 변경 -
하면 일반 파일만 남게 됩니다.
ls -lS | grep '^-'
내 시스템에서는 일반 파일만 표시됩니다.
업데이트 3:
재귀를 추가하려면 행 정렬을 명령에 맡기고 sort
다섯 번째 열을 사용하여 정렬하도록 지시합니다.
ls -lR | grep '^-' | sort -k 5 -rn
-rn
가장 큰 파일을 맨 위에 가져오려면 역순으로 숫자를 입력하세요. 이 명령의 단점은 파일의 전체 경로를 표시하지 않는다는 것입니다.
파일의 전체 경로가 정말로 필요한 경우 다음과 같이 사용하십시오.
find . -type f -exec du -h {} + | sort -r -h
find
이 명령은 모든 하위 디렉터리에 있는 모든 파일을 반복적으로 찾아서 호출합니다 (즉,.
du -h
디스크 사용량 - 사람이 읽을 수 있음) 그런 다음 출력을 다시 정렬합니다. find
/가 sort
지원되지 않으면 및 로 -h
바꾸십시오 . 알아채다du -k
sort -rn
크기그리고디스크 사용량같은 것이 아닙니다.
답변2
찾기 및 정렬과 같은 기능을 사용할 수 있습니다.
find . -type f -ls | sort -r -n -k7
(이 -ls
옵션은 표준은 아니지만 GNU 구현뿐만 아니라 많은 찾기 구현에서 발견됩니다. GNU 찾기 및 기타 구현에서는 ls -li
+로 표시되지 않은 것과 유사한 내용을 표시합니다.)
파일 이름에 개행 문자가 포함될 수 있는 경우 GNU find 및 GNU sort를 사용하십시오.
find . -type f -ls -printf '\0' | sort -zk7rn | tr -d '\0'
답변3
zsh 및 GNU ls 사용:
ls -ldU -- **/*(.OL)
(.OL)
하나는 어디에 있습니까?글로벌 예선, .
선택하다정기적인파일만, OL
길이에 따른 역순(파일 크기, o
오름차순, O
내림차순)입니다.
(이전 버전의 zsh에는 파일 크기가 2^32를 초과하는 문제가 있었습니다.)
일부 운영 체제에서는 명령에 전달되는 인수 목록의 크기에 제한이 있습니다. 이러한 경우에는 다음을 수행해야 합니다.
autoload -U zargs
zargs ./**/*(.OL) -- ls -ldU
자세한 출력이 아닌 파일 목록만 원하는 경우 다음을 수행하십시오.
print -rC1 -- **/*(N.OL)
.
숨겨진 파일( 및 제외하고 이름이 점으로 시작하는 파일 ..
)을 포함하고 숨겨진 디렉터리에서 검색 하려면 D
globbing 한정자를 추가하세요.
print -rC1 -- **/*(ND.OL)
답변4
"파일은 폴더의 어느 곳에나 존재할 수 있습니다"라는 말은 시작 디렉터리(폴더)의 모든 디렉터리(폴더)를 재귀적으로 탐색한다는 의미입니다. find
해야 할 일은 다음과 같습니다 .
find . -type f -exec ls -lSd {} +
이것은 모든 것을 "발견"합니다문서현재 작업 디렉터리( .
). 발견된 각 파일에 대해 ls
발견된 개체를 크기 순서로 정렬하는 프로세스가 실행됩니다. 종결자는 여러 인수가 목록으로 전달되도록 +
합니다 . 디렉터리(폴더)에 많은 수의 파일이 포함되어 있지 않은 한 원하는 결과를 얻으려면 목록이 있어야 합니다(따라서 프로세스를 분기해야 함).-exec
ls