디렉토리와 하위 디렉토리에서 가장 큰 파일을 찾으려면 어떻게 해야 합니까?
UNIX 클래스를 시작한 지 얼마 되지 않아 다양한 Bash 명령어를 배우고 있습니다.우리의 과제는 그 아래에 다수의 폴더가 있는 디렉토리에서 다양한 명령어를 실행하는 것입니다.
다음을 사용하여 루트 폴더의 모든 일반 파일을 나열하고 카운트하는 방법을 알고 있습니다.
find . -type l | wc -l
그러나 전체 디렉토리에서 가장 큰 파일을 찾기 위해 어디로 가야 하는지 알고 싶습니다.본 이 있어요.du
않았기 때문에 것 . 그래서 우리가 배운 것들 중 레퍼토리에선 어떻게 해서든 그걸 연결시킬 필요가 있을 것 같아.ls -t
명령어를 입력합니다.
제 '언어'가 틀렸다면 죄송합니다. 아직 익숙해지고 있습니다!
이 링크에서 인용-
특정 디렉토리 및 하위 디렉토리에서 상위 10개의 파일 이름(디렉토리가 아님)을 검색하여 인쇄하는 경우
$ find . -type f -printf '%s %p\n'|sort -nr|head
검색을 현재 디렉토리로 제한하려면 "-maxdepth 1"과 find를 사용합니다.
$ find . -maxdepth 1 -printf '%s %p\n'|sort -nr|head
또한 상위 10개의 "파일 및 디렉토리"를 인쇄하려면:
$ du -a . | sort -nr | head
** 위의 모든 예에서 상위 X개의 가장 큰 파일을 인쇄하려면 위의 유일한 "head" 대신 "head -n X"를 사용합니다.
현재 디렉토리와 하위 디렉토리에서 상위 25개의 파일을 찾으려면 다음 절차를 따릅니다.
find . -type f -exec ls -al {} \; | sort -nr -k5 | head -n 25
그러면 "sort -nr -k5" piped 명령을 사용하여 파일 크기를 기준으로 정렬하여 상위 25개의 파일이 출력됩니다.
동일하지만 사람이 읽을 수 있는 파일 크기:
find . -type f -exec ls -alh {} \; | sort -hr -k5 | head -n 25
find . -type f | xargs ls -lS | head -n 1
출력
-rw-r--r-- 1 nneonneo staff 9274991 Apr 11 02:29 ./devel/misc/test.out
파일 이름만 원하는 경우:
find . -type f | xargs ls -1S | head -n 1
하면 '어울리지 않다'를 사용하지 됩니다.awk
할 수 .ls
.
경고. 왜냐하면xargs
는, 너무 긴 라인을 하는 것을 하려고 하고 은, 「 」, 「 」, 「 」, 「 」, 「 」, 「 」, 「 」, 「 」, 「 」, 「 」, 「 」, 「 」로 디렉토리에서 하면, 할 가능성이 있습니다.다양한 파일이 있는 디렉토리에서 커맨드 라인을 실행하면 실패할 수 있습니다.ls
를 여러 번 실행하게 됩니다. 없는 할 수 ).head -n 1
의 ls
run "을 실행합니다.ls -S
1의하다, 하다, 하다, 이이를를 약약다다 만손다다손
Linux/UNIX/BSD 파일 시스템에서 가장 큰 파일/디렉토리를 찾는 데 사용할 수 있는 간단한 명령어는 없습니다.그러나 파이프를 사용하여 다음 세 가지 명령을 조합하면 가장 큰 파일 목록을 쉽게 찾을 수 있습니다.
# du -a /var | sort -n -r | head -n 10
더 많은 사람이 읽을 수 있는 출력을 원하는 경우:
$ cd /path/to/some/var
$ du -hsx * | sort -rh | head -10
어디에,
- var는 검색할 디렉토리입니다.
- du command -h option : 사람이 읽을 수 있는 형식으로 크기를 표시합니다(예: 1K, 234M, 2G).
- du command -s option : 각 인수(인수)의 합계만 표시합니다.
- du command -x option : 다른 파일시스템상의 디렉토리를 건너뜁니다.
- sort command -r option : 비교 결과를 반전시킵니다.
- sort command -h option : 사람이 읽을 수 있는 숫자를 비교합니다.이것은 GNU 정렬 고유의 옵션입니다.
- head command - 10 OR - n 10 option :첫 번째 10 행을 표시합니다.
파일인을 재귀적으로 7번째 필드 로합니다.find
output; yours)및 첫 번째 file.output; check yours만합니다.
find . -type f -ls | sort +7 | head -1
은 " " " 입니다.find
는 재귀 검색의 시작 경로입니다. A형f
아, 아, 아, 아, 아, 아, 아, 아, 아, 아, 아, 아, 아.이것을 파일명으로 해석하려고 하면, 파일명에 공백, 줄바꿈, 그 외의 특수 문자가 포함되어 있으면, 에러가 발생하는 것에 주의해 주세요.션 to の to to to 。sort
system.operating system에 .FreeBFreeB를 사용하고 SD.
나은" 더 은 "더 나은"을 갖는 입니다.find
만, 「」를 사용하는 경우가 .stat
상세 하려면 , 「 」 「 」 「 」 、 「 」 、 「 」를 사용합니다.awk
이데올로기 때문에「」의 .stat
에, 운영체제
현재 작업 디렉토리에서 가장 큰 파일 또는 폴더를 찾습니다.
ls -S /path/to/folder | head -1
모든 하위 디렉토리에서 가장 큰 파일을 찾으려면:
find /path/to/folder -type f -exec ls -s {} \; | sort -nr | awk 'NR==1 { $1=""; sub(/^ /, ""); print }'
Solaris에서는 다음을 사용합니다.
find . -type f -ls|sort -nr -k7|awk 'NR==1{print $7,$11}' #formatted
또는
find . -type f -ls | sort -nrk7 | head -1 #unformatted
왜냐하면 여기 게시된 다른 어떤 것도 효과가 없었기 때문입니다. 큰 됩니다.$PWD
서の서
다음 한 줄(가장 큰 파일 상위 20개 표시)을 사용해 보십시오.
ls -1Rs | sed -e "s/^ *//" | grep "^[0-9]" | sort -nr | head -n20
또는 (사람이 읽을 수 있는 크기):
ls -1Rhs | sed -e "s/^ *//" | grep "^[0-9]" | sort -hr | head -n20
BLINUX/B에서 다른하여 SD에서 으로 합니다. Finds SD/OSX 른 find 。
-printf
옵션은 OSX/BSD 및 OSX/BSD 션 습 니 이 option doesn다 os없 onb옵b os't exist는x/sd에/xsd and option doesnstat
OS에 따라 다른 매개 변수가 있습니다.에는 OS에 따라 다른 파라미터가 있습니다.그러나 OSX/BSD os, OSX/BSD ( 바 번 작 째 한 는 어 령 however the 명 단 위 os command두기동 tosort
다' doesnt-h
), install 인스톨 합니다.sort
부에서coreutils
or remove 또는 제거-h
부에서ls
and use 및 사용sort -nr
대신.대신.
따라서 다음 에일리어스를 rc 파일에 포함하면 편리합니다.
alias big='du -ah . | sort -rh | head -20'
alias big-files='ls -1Rhs | sed -e "s/^ *//" | grep "^[0-9]" | sort -hr | head -n20'
다음 명령을 사용해 보십시오.
find /your/path -printf "%k %p\n" | sort -g -k 1,1 | awk '{if($1 > 500000) print $1/1024 "MB" " " $2 }' |tail -n 1
이것은 최대 파일 이름 및 크기를 500M보다 인쇄합니다.최대 파일 이름과 크기가 500M 이상 인쇄됩니다. You can move the 이동할 수 있습니다.if($1 > 500000)
그리고 디렉토리에서 가장 큰 파일을 인쇄할 것입니다.디렉토리에서 가장 큰 파일이 인쇄됩니다.
du -aS /PATH/TO/folder | sort -rn | head -2 | tail -1
또는
du -aS /PATH/TO/folder | sort -rn | awk 'NR==2'
폴더의 큰 파일을 나열하려면
ls -sh /pathFolder | sort -rh | head -n 1
의 출력ls -sh
사이즈가 있다s
및 인간h
파일 크기 번호의 알기 쉬운 표시.
You could use 사용할 수 있습니다.ls -shS /pathFolder | head -n 1
. 더 큰 · 클 록 the biggerS
부에서ls
이미 큰 파일을 작은 파일로 주문하지만, 이 폴더에 있는 모든 파일에 대한 모든 파일 요약이 표시됩니다.이미 큰 파일부터 작은 파일까지 목록을 정렬했지만 첫 번째 결과는 해당 폴더에 있는 모든 파일의 합계입니다.그래서 더 큰 파일을 나열하려면 라 서 일 나 파 일 나 의 나 열 so if file려 to to,하면, file want just하파 you하를 bigger need list thehead -n 2
"2 라인 결과" 또는 " 째 과 번 결 " 인 째 제 사 용 하 여 예 result and line" check example at "를에번 with usels sort head
. . .
이 명령어는 나에게 효과가 있다.
find /path/to/dir -type f -exec du -h '{}' + | sort -hr | head -10
사람이 읽을 수 있는 모드에서 크기별로 상위 10개의 파일을 나열합니다.
이 스크립트를 사용하면 추가 작업을 위해 가장 큰 파일을 쉽게 찾을 수 있습니다.~/bin 디렉토리에 저장하고 ~/bin을 $PATH에 넣습니다.
#!/usr/bin/env bash
# scriptname: above
# author: Jonathan D. Lettvin, 201401220235
# This finds files of size >= $1 (format ${count}[K|M|G|T], default 10G)
# using a reliable version-independent bash hash to relax find's -size syntax.
# Specifying size using 'T' for Terabytes is supported.
# Output size has units (K|M|G|T) in the left hand output column.
# Example:
# ubuntu12.04$ above 1T
# 128T /proc/core
# http://stackoverflow.com/questions/1494178/how-to-define-hash-tables-in-bash
# Inspiration for hasch: thanks Adam Katz, Oct 18 2012 00:39
function hasch() { local hasch=`echo "$1" | cksum`; echo "${hasch//[!0-9]}"; }
function usage() { echo "Usage: $0 [{count}{k|K|m|M|g|G|t|T}"; exit 1; }
function arg1() {
# Translate single arg (if present) into format usable by find.
count=10; units=G; # Default find -size argument to 10G.
size=${count}${units}
if [ -n "$1" ]; then
for P in TT tT GG gG MM mM Kk kk; do xlat[`hasch ${P:0:1}`]="${P:1:1}"; done
units=${xlat[`hasch ${1:(-1)}`]}; count=${1:0:(-1)}
test -n "$units" || usage
test -x $(echo "$count" | sed s/[0-9]//g) || usage
if [ "$units" == "T" ]; then units="G"; let count=$count*1024; fi
size=${count}${units}
fi
}
function main() {
sudo \
find / -type f -size +$size -exec ls -lh {} \; 2>/dev/null | \
awk '{ N=$5; fn=$9; for(i=10;i<=NF;i++){fn=fn" "$i};print N " " fn }'
}
arg1 $1
main $size
그렇게 하는 것이 매우 간단한 방법입니다.
ls -l | tr -s " " " " | cut -d " " -f 5,9 | sort -n -r | head -n 1***
될 거예요.8445 examples.desktop
Linux 솔루션:예를 들어, 파일/폴더 크기(내림차순)에 따라 홈(/) 디렉토리의 모든 파일/폴더 목록을 보려고 합니다.
sudo du -xm / | sort -rn | 기타
ls -alR|awk '{ if ($5 > max) {max=$5;ff=$9}} END {print max "\t" ff;}'
경로와 한 개 부터 저는 요요경경 for for for for for for for for for for for에 하고 있습니다. 지금으로서는 제가 출마합니다./var/log/
표시
(sudo du -a /var/log/ |sort -nr|head -n20 |awk '{print $NF}'|while read l ;do du -csh $l|grep -vi total;done ) 2> /dev/null
언급URL : https://stackoverflow.com/questions/12522269/how-to-find-the-largest-file-in-a-directory-and-its-subdirectories
'programing' 카테고리의 다른 글
vba의 쓰기 문에서 큰따옴표 제거 (0) | 2023.04.17 |
---|---|
WPF 비트맵 소스 이미지를 파일에 저장하는 방법 (0) | 2023.04.17 |
SQL Server 구성 관리자를 찾을 수 없습니다. (0) | 2023.04.12 |
WPF DataGrid에 페이지 매기는? (0) | 2023.04.12 |
Oracle SQL에서 단일 견적 처리 방법 (0) | 2023.04.12 |