리눅스에서는 1MB 이상인 파일의 총 폴더 크기를 어떻게 얻습니까?


2

안녕하세요 내 서버에서 일부 정리를하고 있으며 1MB 이상 1MB 이하의 파일 폴더의 전체 크기를 얻는 방법을 알고 싶습니다. 나는까지 :

ls -lh | grep 'M '

그러나 나는 모든 것의 총 크기를 얻을 수 없습니다.

여기에 이미지 설명을 입력하십시오

답변:


4

ls(실제로 나쁜 연습 †로 간주되는) 출력을 구문 분석하는 대신 다음 finddu같이 사용할 수 있습니다 .

  • -type f현재 디렉토리 및 ≥1M ( -size +1M) 크기의 하위 디렉토리에서 모든 파일 ( ) 을 찾아서 크기 의 합계를 얻으려면 다음을 수행하십시오.

    find . -type f -size +1M -print0 | du -sch --files0-from=- | tail -1
    
  • 유사하지만 하위 디렉토리 ( -maxdepth 1) 에서 재귀하지 않습니다 .

    find . -maxdepth 1 -type f -size +1M -print0 | du -sch --files0-from=- | tail -1
    
  • 크기가 ≤1M 인 파일의 경우 :

    find . -type f -size -1M -print0 | du -sch --files0-from=- | tail -1
    find . -maxdepth 1 -type f -size -1M -print0 | du -sch --files0-from=- | tail -1
    

du지원 버전이 --files0-from옵션을 제공하면 작동 합니다 . 그렇지 않은 경우 다음을 시도하십시오.

find . -type f -size +1M -exec du -sch {} + | tail -1

그러나 파일이 너무 많으면 작동하지 않습니다 (답이 틀립니다). 이 경우 대신 시도해보십시오.

find . -type f -size +1M -exec sh -c 'du -sch "$@" | tail -1' _ {} +

그런 다음 몇 줄 (너무 많지 않은 줄)을 갖게되고 직접 수학을해야합니다.

함께 find하면 당신이 고려해야 할 어떤 파일에 완벽하게 제어 할 수 있습니다! 필터링 가능성은 대부분 끝이 없습니다.

건배!


ls -1h | grep 'M ' 문자열이 포함 된 파일이 있으면   틀린 답을 얻게됩니다 "M ". 그리고 그 결과는 ls기계가 아닌 인간이 읽을 수 있습니다. 기계에는 이런 종류의 정보를 얻을 수있는 훨씬 더 좋은 방법이 있습니다.


설명과 함께 좋은 답변을 얻으려면 +1하십시오. 방금 다른 옵션을 추가하고 싶습니다. find / path / to / search -type f -size + 1M -ls | awk '{SUM + = $ 2} END {print SUM}'
Hennes

0

이것은 나를 위해 일했습니다.

ls -lh | grep 'M' | awk '{ SUM += $5} END {print SUM}'

5 달러는 무엇을 의미하며 어떻게 도출합니까? 단어 사이의 공백으로?
Patoshi パ ト シ

1
$ 5는 ls -l출력 의 다섯 번째 필드입니다 . (파일 크기는 어느 것입니까). 구문 분석 ls 출력은 잘못된 형식으로 간주되며 변경되면 중단됩니다. find -ls를 사용하는 것도 동일하며 더 나은 솔루션으로 간주됩니다. 하위 디렉토리를 사용하는 동안 -type f와 결합 할 수 있습니다.
Hennes
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.