sourcetip

Bash의 폴더 크기 확인

fileupload 2023. 5. 3. 21:39
반응형

Bash의 폴더 크기 확인

디렉터리 크기를 계산하고 크기가 10GB 미만이고 2GB 이상이면 작업을 수행하는 스크립트를 작성하려고 합니다.내 폴더 이름을 어디서 언급해야 합니까?

# 10GB
SIZE="1074747474"

# check the current size
CHECK="`du /data/sflow_log/`"
if [ "$CHECK" -gt "$SIZE" ]; then
  echo "DONE"
fi

할 수 있는 일:

du -hs your_directory

그러면 대상 디렉터리의 크기를 간략하게 출력할 수 있습니다.와 같은 와일드카드 사용*여러 디렉터리를 선택할 수 있습니다.

대상 내의 모든 파일 및 하위 디렉터리에 대한 전체 크기 목록을 원하는 경우 다음을 수행할 수 있습니다.

du -h your_directory

팁:

  • 인수 추가-c마지막에 전체 행이 표시됩니다.예:du -hcs또는du -hc.

  • 인수 제거-h사람이 읽을 수 있는 MiB 또는 GiB 형식 대신 정확한 KiB 형식으로 크기를 확인합니다.예:du -s또는du -cs.

하위 폴더가 아닌 폴더 크기만 보려면 다음을 사용할 수 있습니다.

du -hs /path/to/directory

업데이트:

당신은 그걸 알아야 해요du파일 크기가 아닌 사용된 디스크 공간을 표시합니다.

사용할 수 있습니다.--apparent-size실제 파일 크기의 합계를 보려면 다음과 같이 하십시오.

--apparent-size
      print  apparent  sizes,  rather  than  disk  usage; although the apparent size is usually smaller, it may be larger due to holes in ('sparse')
      files, internal fragmentation, indirect blocks, and the like

그리고 물론 그럴 필요는 없습니다.-h스크립트 내부의 (사용자가 읽을 수 있는) 옵션입니다.

대신 사용할 수 있습니다.-b스크립트 내부를 보다 쉽게 비교할 수 있습니다.

그러나 주의해야 할 점은-b적용되는--apparent-size저절로그리고 그것은 당신이 필요로 하는 것이 아닐 수도 있습니다.

-b, --bytes
      equivalent to '--apparent-size --block-size=1'

그래서 제 생각에, 당신은 사용해야 합니다.--block-size또는-B

#!/bin/bash
SIZE=$(du -B 1 /path/to/directory | cut -f 1 -d "   ")    
# 2GB = 2147483648 bytes
# 10GB = 10737418240 bytes
if [[ $SIZE -gt 2147483648 && $SIZE -lt 10737418240 ]]; then
    echo 'Condition returned True'
fi

디렉토리 내의 모든 디렉토리의 크기를 확인하려면 다음을 사용합니다.

du -h --max-depth=1

요약 사용(-s) 및 바이트(-b)를 사용하여 요약의 첫 번째 필드를 자를 수 있습니다.cut이 모든 것을 종합하면:

CHECK=$(du -sb /data/sflow_log | cut -f1)

디렉터리 크기만 가져오려면 다음과 같이 하십시오.

du --max-depth=0 ./directory

출력은 다음과 같습니다.

5234232       ./directory

폴더의 총 크기와 MB 또는 GB 형식을 보려면 아래 스크립트를 사용하십시오.

$du -s --block-size=M /path/to/your/directory/
# 10GB
SIZE="10"


# check the current size
CHECK="`du -hs /media/662499e1-b699-19ad-57b3-acb127aa5a2b/Aufnahmen`"
CHECK=${CHECK%G*}
echo "Current Foldersize: $CHECK GB"

if (( $(echo "$CHECK > $SIZE" |bc -l) )); then
        echo "Folder is bigger than $SIZE GB"
else
        echo "Folder is smaller than $SIZE GB"
fi

도움이 된다면, 당신은 또한 당신의 웹사이트에.bashrc또는.bash_profile.

function dsize()
{
    dir=$(pwd)
    if [ -n "$1" ]; then
            dir=$1
    fi
    du -hs "$dir"
}

현재 디렉토리 또는 인수로 전달한 디렉토리의 크기를 인쇄합니다.

언급URL : https://stackoverflow.com/questions/16661982/check-folder-size-in-bash

반응형