"du"와 "tree"의 장점을 결합

"du"와 "tree"의 장점을 결합

"du"의 솔직함과 "tree"의 들여쓰기를 결합할 수 있지 않을까 싶습니다. 디렉토리 크기 목록을 원하는 경우:

du -hx -d2

...두 가지 수준 깊이를 보여주며 모든 크기 요약은 정직하지만 하위 디렉터리 들여쓰기는 없습니다. 반면에:

tree --du -shaC -L 2

...압입과 색상은 괜찮지만 보고된 치수가 거짓입니다. 실제 치수를 얻으려면 다음을 수행해야 합니다.

tree --du -shaC

...즉, "트리"가 전체 디렉토리 구조를 표시하도록 허용한 경우에만 실제 크기를 얻을 수 있습니다. 실제로 표시하려는 하위 디렉터리 수준이 얼마나 되는지에 관계없이 항상 정확한 크기 요약을 가질 수 있기를 원합니다. 나는 종종 이렇게 합니다:

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

...디렉토리를 제외한 모든 항목을 다듬고 멋지게 들여쓰기합니다. 하지만 요약 없이 표시를 주어진 숫자 수준으로 제한하는 쉬운 방법은 없습니다. 어떤 방법이 있나요? 어쩌면 내가 올바른 스위치를 놓쳤을 수도 있습니다 ...

답변1

결제도 가능NCDU: http://dev.yorhel.nl/ncdu

해당 페이지에는 다른 "유사한 프로젝트"도 나열되어 있습니다.

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

tdu - 또 다른 ncurses 기반 소형 디스크 사용량 시각화 유틸리티입니다.

TreeSize - 트리 뷰를 사용하는 GTK.

Baobab - GTK, 원형 차트, 트리뷰 및 트리맵 작업. 그놈과 함께 제공됩니다.

GdMap - 트리맵이 표시되는 GTK입니다.

Filelight - KDE, 원형 차트 사용.

QDirStat - KDE, 트리맵 표시.

QDiskUsage - 원형 차트를 사용하는 Qt입니다.

xdiskusage - 트리맵 표시가 포함된 FLTK.

fsv - 3D 시각화.

Philesight - Filelight의 웹 기반 복제품입니다.

답변2

색상 코드를 얻기 위해 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명령은 두 개의 공백(하나 이상의 공백, 공백이 아닌 공백, 공백이 뒤따름)과 가 있는 모든 문자를 제거합니다 [.

깊이를 1로 설정하려면 {} 중괄호 안의 바인딩 개수를 {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/

답변3

당신은 그것을 사용할 수 있습니다의무

여기에 이미지 설명을 입력하세요.

  • LS_COLORS 환경 변수를 기반으로 한 색상 출력입니다.
  • 파일 시스템 트리 표시
  • 작은 파일을 집계하는 기능
  • 파일이나 디렉토리를 제외하는 기능
  • 다양한 디렉토리를 비교하는 기능
  • 빠르고 Rust로 작성됨

답변4

버전

$ tree --version;
# tree v2.1.1 © 1996 - 2023 by Steve Baker, Thomas Moore, Francesc Rocher,
# Florian Sesser, Kyosuke Tokoro

주문하다

# -x - Stay on the current file-system only...
# -a - All files are printed... (those beginning with a dot `.')...
# -p - Print the file type and permissions for each file...
# -u - Print the username, or UID...
# -g - Print the group name, or GID...
# -h - Print the size of each file but in a more human readable way...
# -F - Append a `/' for directories, a `=' for socket files...
# -D - Print the date of the last modification time...
# --du - For each directory report its size as the accumulation of sizes...
# --dirsfirst - List directories before files...
# --charset - Set the character set to use when outputting...
# --sort - Sort the output by type instead of name...
# --timefmt - Prints... and formats the date according to the format string...
#
tree -xapughFD \
    --du --dirsfirst \
    --charset='ascii' --sort='size' --timefmt='%Y-%m-%d_%H-%M-%S' -- \
    . \
    | grep -P '^(?:\|\s{3}|\s{4}){0,1}(?:`|\|)\-\-';

grep정규식 에서는 {0,1}(솔직히 와 같은 것 ?)을 "깊이" 사용할 수 있습니다. 예를 들어 {0,3}현재 디렉터리와 최대 3개의 디렉터리를 배치합니다.

$ pwd -P;
/home/user
$ tree -xahpugFD --du --charset=ascii --dirsfirst --sort=size --timefmt='%Y-%m-%d_%H-%M-%S' -- '/usr/share/vlc' | grep -P '^(?:\|\s{3}|\s{4}){0,1}(?:`|\|)\-\-';
|-- [drwxr-xr-x root     root     520K 2022-10-23_09-19-24]  lua/
|   `-- [drwxr-xr-x root     root     516K 2022-10-23_09-19-24]  http/
|-- [drwxr-xr-x root     root     210K 2022-10-23_09-20-57]  skins2/
|   |-- [drwxr-xr-x root     root     4.1K 2022-10-23_09-20-57]  fonts/
|   |-- [-rw-r--r-- root     root     160K 2022-03-13_10-00-10]  default.vlt
|   |-- [-rw-r--r-- root     root      31K 2022-03-13_10-00-10]  winamp2.xml
|   |-- [-rw-r--r-- root     root      10K 2022-03-13_10-00-10]  skin.dtd
|   `-- [-rw-r--r-- root     root      167 2022-03-13_10-00-10]  skin.catalog
|-- [drwxr-xr-x root     root     6.1K 2022-10-23_09-19-24]  utils/
|   |-- [-rwxr-xr-x root     root      873 2022-03-13_10-00-10]  gnome-vlc-default.sh*
|   |-- [-rwxr-xr-x root     root      620 2022-03-13_10-00-10]  audio-vlc-default.sh*
|   `-- [-rwxr-xr-x root     root      620 2022-03-13_10-00-10]  video-vlc-default.sh*
`-- [-rw-r--r-- root     root      71K 2022-03-13_10-00-10]  vlc.ico

관련 정보