특정 크기보다 큰 디렉토리를 검색하는 방법을 찾고 있습니다. 나는 다음이 매우 잘 작동한다는 것을 알았습니다.
# du -sh /var/log/ --threshold=5G
5.3G /var/log/
문제는 --threshold가 Ubuntu에서만 지원되는 것 같다는 것입니다. 예를 들어 CentOS에서 시도하면 다음과 같은 결과가 나타납니다.
# du -sh /var/log/ --threshold=5G
du: unrecognized option '--threshold=5G'
Try `du --help' for more information.
CentOS, Ubuntu 및 Debian에서 작동하는 대안을 아는 사람이 있습니까?
du -s 플래그를 지원하려면 (하위 디렉토리의 크기를 제외하고) 동등한 것이 확실히 필요하다는 점에 유의해야 합니다.
답변1
--threshold
사용 가능한 명령은 다음과 같습니다.
- 우분투 18.04/20.4
- 데비안 제시 8/stretch 9 버스터 10
- 센토스 7
큰 명령줄:
(
THRESHOLD='200M'
PATTERN='==========---------========----'
(
sudo find / -type d -print0 2>/dev/null | \
sudo xargs -0 -P4 -- du -sh 2>/dev/null ;
echo "${THRESHOLD} ${PATTERN}"
) | sort -h | sed "0,/${PATTERN}/ d"
)
참고: 폴더 이름에 공백이 있는 경우 -print0
두 파일 사이의 구분 기호가 도움이 됩니다.\0
-0
구분 기호가 있는 스트림을 읽도록 xargs에 지시\0
-P4
어느 정도의 병렬 처리로 4를 실행하도록 지시합니다.
0,/REGEX/ d
sed
첫 번째 행과 REGEX와 일치하는 행 사이의 행을 삭제 하도록 지시합니다 .
첨부된:
Centos 6에서는 사용할 수 없습니다.
답변2
#EchoMike444에서 언급했듯이 이 옵션은 CentOS 7의 명령 --threshold
에서는 작동 하지만 CentOS 6 및 이전 버전에서는 작동하지 않습니다. du
내 평판이 부족해서 그의 솔루션에 대해 언급할 수는 없지만 꽤 잘 작동한다고 말하고 싶습니다. 해당 명령을 잘 이해하지 못 sed
하므로 작업을 완료하는 데 도움이 될 수 있는 몇 가지 대체 명령은 다음과 같습니다.
실행한 명령은 요약만 수행합니다./var/로그/디렉토리이지만 하위 디렉토리는 포함하지 않습니다.
# du -sh /var/log/ --threshold=5G
CentOS 7을 사용하는 경우 다음 명령을 실행하면 /var/log/ 디렉터리 트리에 있는 모든 5G 이상의 디렉터리에 대한 저장 공간 사용량이 표시됩니다.
# find /var/log/* -type d | xargs du -h --threshold=5G | sort -hr
당신이 그것을 어떻게 사용할 계획인지는 잘 모르겠지만 여기 당신에게 도움이 될 만한 것이 있습니다. 다음 명령은 찾고 있는 내용을 정확하게 제공하지는 않지만 디렉터리 내에서 가장 큰 10개의 하위 디렉터리를 식별합니다./var/로그/목차. echo 명령의 출력보다 높은 내용이 원하는 내용이 됩니다.
# (find /var/log/* -type d -exec du -sh {} \; ; echo "5G ####################") | sort -hr | head
간단하게 유지하려면 다음 명령을 실행하면 위와 동일한 결과가 나오지만 echo 명령의 출력은 제외됩니다.
# find /var/log/* -type d -exec du -sh {} \; | sort -hr | head
5G 이상의 파일을 찾고 있다면 다음 명령을 사용하여 해당 결과를 얻을 수 있습니다.
# find /var/log/ -size +5G -exec ls -l {} \; | sort -nr -k5