명령줄에서 하위 디렉터리의 항목 수를 표시하는 방법

명령줄에서 하위 디렉터리의 항목 수를 표시하는 방법

Ubuntu 그래픽 사용자 인터페이스에서는 한 열이 해당 하위 디렉터리의 항목 수를 나타내는 디렉터리의 하위 디렉터리를 나열할 수 있습니다. 여기에 표시된 대로:

노틸러스 스크린샷

명령줄을 사용하여 동일한 결과(크기 열의 항목 수)를 얻을 수 있는 방법이 있습니까?

답변1

다음은 사용할 수 있는 작은 쉘 함수입니다. 다음 줄을 다음 줄에 추가하세요 ~/.bashrc.

lsc(){
    ## globs that don't match should expand to a null string
  shopt -s nullglob
  ## If no arguments were given use the current dir
  if [[ $# -eq 0 ]]; then
    targets="."
  ## Otherwise, use whatever was given
  else
    targets=($@)
  fi
  ## iterate over the arguments given
  for target in "${targets[@]}"; do
    ## get the contents of the target
    contents=("$target"/*)
    ## iterate over the contents
    for thing in "${contents[@]}";  do
      ## If this one is a directory
      if [[ -d "$thing" ]]; then
        ## collect the directory's contents
        count=("$thing"/*)
        ## Print the dir's name (with a '/' at the end)
        ## and the number of items found in it
        printf "%s/ (%s)\n" "$thing" "${#count[@]}"
      else
        ## If this isn't a dir, just print the name
        printf "%s\n" "$thing"
      fi
    done
  done
}

그런 다음 새 터미널을 열고 다음을 실행하십시오.

lsc /path/to/dir

예를 들어, 다음 디렉토리가 있다고 가정합니다( \012이름에 개행 문자가 있습니다).

$ tree
.
├── a bad one
│   └── file 1
├── a bad worse\012one
│   └── file 1 \012two
├── dir1
│   └── file
├── dir2
│   ├── file1
│   └── file2
├── dir3
│   ├── file1
│   ├── file2
│   └── file3
├── dir4
│   └── dir
├── empty_dir

8 directories, 7 files

당신은 얻을 것이다:

$ lsc 
./a bad one/ (1)
./a bad worse
one/ (1)
./dir1/ (1)
./dir2/ (2)
./dir3/ (3)
./dir4/ (1)
./empty_dir/ (0)
./mp3/ (1)

이 접근 방식의 주요 장점은 다음과 같습니다.

  1. 여러 디렉터리에서 실행할 수 있습니다.

    lsc /path/to/dir /path/to/dir2 ... /path/to/dirN
    

    또는 현재의 경우:

    lsc
    
  2. 위에서 볼 수 있듯이 공백이나 개행 문자가 포함된 파일 및 디렉터리 이름을 포함하여 임의의 파일 및 디렉터리 이름에 대해 작동할 수 있습니다.

관련 정보