programing

디렉토리와 하위 디렉토리에서 가장 큰 파일을 찾으려면 어떻게 해야 합니까?

lastcode 2023. 4. 12. 22:26
반응형

디렉토리와 하위 디렉토리에서 가장 큰 파일을 찾으려면 어떻게 해야 합니까?

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 1ls run "을 실행합니다.ls -S1의하다, 하다, 하다, 이이를를 약약다다 만손다다손

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번째 필드 로합니다.findoutput; yours)및 첫 번째 file.output; check yours만합니다.

find . -type f -ls | sort +7 | head -1

은 " " " 입니다.find는 재귀 검색의 시작 경로입니다. A형f아, 아, 아, 아, 아, 아, 아, 아, 아, 아, 아, 아, 아.이것을 파일명으로 해석하려고 하면, 파일명에 공백, 줄바꿈, 그 외의 특수 문자가 포함되어 있으면, 에러가 발생하는 것에 주의해 주세요.션 to の to to to 。sortsystem.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 doesnstatOS에 따라 다른 매개 변수가 있습니다.에는 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

반응형