‘du’와 ‘tree’의 장점을 결합 ‘du’의 정직함과 ‘tree’의

‘du’의 정직함과 ‘tree’의 들여 쓰기 된 형식을 결합 할 수 있는지 궁금합니다. 디렉토리 크기 목록을 원할 경우 :

du -hx -d2

… 두 레벨을 깊이 표시하고 모든 크기 요약은 정직하지만 하위 디렉토리는 들여 쓰기가 없습니다. 반면에 :

tree --du -shaC -L 2

… 잘 들여 들여 쓰기를하지만보고 된 크기는 거짓말입니다. 실제 크기를 얻으려면 다음을 수행해야합니다.

tree --du -shaC

… 즉, ‘tree’가 전체 디렉토리 구조를 보여 주면 실제 크기 만 가져옵니다. 실제로 표시하려는 하위 디렉토리의 수에 관계없이 항상 정확한 크기 요약을 가질 수 있기를 원합니다. 나는 종종 이것을한다 :

tree -du -shaC | grep "\[01;34m"

… 디렉토리를 제외한 모든 것을 제거하고 멋지게 들여 쓰기 …하지만 디스플레이를 주어진 수 수준 (요약을 놓지 않고)으로 제한하는 쉬운 방법은 없습니다. 방법이 있습니까? 아마도 올바른 스위치를 놓쳤습니다 …



답변

ncdu 도 확인 하십시오 :
http://dev.yorhel.nl/ncdu

이 페이지에는 다른 “유사한 프로젝트”도 나와 있습니다.

gt5-ncdu와 매우 유사하지만 다른 접근 방식.

tdu-또 다른 작은 ncurses 기반 디스크 사용 시각화 유틸리티.

TreeSize-GTK (트 리뷰 사용)

Baobab-GTK, 파이 차트, 트 리뷰 및 트리 맵을 사용합니다. 그놈과 함께 제공됩니다.

GdMap-GTK, 트리 맵 디스플레이.

Filelight-파이 차트를 사용하는 KDE

KDirStat-트리 맵 디스플레이가있는 KDE.

QDiskUsage-파이 차트를 사용하는 Qt.

xdiskusage-트리 맵 표시가있는 FLTK.

fsv-3D 시각화

Philesight-Filelight의 웹 기반 복제본.


답변

색상 코드를 grep하지 않아도됩니다 . -d옵션은 list directories only입니다.

이것은 당신이 원하는 것을하는 것 같습니다 :

$ tree --du -d -shaC | grep -Ev '(  *[^ ]* ){2}\['
.
├── [  18]  dir1
├── [  30]  dir2
├── [ 205]  junk
│   ├── [  18]  dir1
│   ├── [  30]  dir2
│   └── [  76]  dir3
├── [ 119]  merge
└── [  20]  stuff

 4.4K used in 10 directories

grep명령은 공백이 하나 뒤에 있고 공백이 아닌 공백이 뒤 따르는 모든 행을 두 번 제거한 다음 a를 제거 [합니다.

당신은 하나의 깊이를 원하는 경우에 {} 중괄호 바운드 수를 변경 {1}하기보다는 {2}. 3의 깊이를 원한다면 동일하게 변경하십시오 {3}.

이것을 다음과 같이 쉘 함수로 바꿀 수 있습니다.

mytreedu() {
  local depth=''

  while getopts "L:" opt ; do
      case "$opt" in
          L) depth="$OPTARG" ;;
      esac
  done

  shift "$((OPTIND-1))"

  if [ -z "$depth" ] ; then
      tree --du -d -shaC "$@"
  else
      local PATTERN='(  *[^ ]* ){'"$depth"'}\['
      tree --du -d -shaC "$@" | grep -Ev "$PATTERN"
  fi
}

이것은 옵션과 옵션 이있는 경우 명령 행 에서 옵션과 인수 getopts를 “훔치는” 데 사용 됩니다 . 명령 행에 옵션 이 없으면 작동합니다.-Ltree-L n

다른 모든 옵션과 인수는 tree명령 으로 전달됩니다 .

local PATTERN=...줄은 정말 필요하지 않습니다. 나는 한 줄에 들어가고 여기에서 단어 줄 바꿈이되지 않도록하기 위해 그렇게했습니다 U&L. 정규 표현식은 아마도 직접적으로 진행되어야 tree | grep ...합니다.

다음과 같이 실행하십시오.

mytreedu

또는

mytreedu -L 2 /path/to/dir/

답변

dutree 를 사용할 수 있습니다

  • LS_COLORS 환경 변수에 따른 컬러 출력.
  • 파일 시스템 트리를 표시합니다
  • 작은 파일을 집계하는 기능
  • 파일 또는 디렉토리를 제외하는 기능
  • 다른 디렉토리를 비교하는 능력
  • Rust로 작성된 빠른

답변

이 작업을 수행하는 완벽한 명령 도구는 없지만 필자는 두 가지 방법을 찾았습니다.

  • 폴더와 파일 크기를 모두 표시하지만 트리 모드에서는 표시되지 않습니다.

    du -ah --max-depth=1 /var/log

  • 트리 모드로 표시되지만 파일 크기 만 표시되며 폴더 수는

    tree -ah /var/log -L 1


답변

cas에서 영감을 얻은 지금 나는 이것을하고 있습니다 :

treee ()
{
    integer levels=$(( ($1 + 1) * 4 ))
    tree --du -shaC | grep "\[01;34m" | grep -Ev "^[^\[]{$levels}\[*"
    du -sh .
}