패턴과 일치하는 파일에 대한 쉘 스크립트 및 각 디렉토리의 발생 횟수 계산

패턴과 일치하는 파일에 대한 쉘 스크립트 및 각 디렉토리의 발생 횟수 계산

다음과 같은 문제가 있습니다. 디렉터리당 마이그레이션된 파일 수를 계산하고 싶습니다.

내 구조는 항상 다음과 같습니다.

/some/path/app1/migrations/0001_hello_world.py  
/some/path/app2/migrations/0001_foo.py  
/some/path/app2/migrations/0002_bar.py

나에게 필요한 것은 쉘 스크립트입니다. 가장 좋은 경우에는 다음 결과를 얻기 위한 한 줄 스크립트입니다.

app1: 1
app2: 2

그래서 응용 프로그램 디렉터리당 파일 수를 얻습니다.

내 파일 목록을 얻었습니다.

git diff --color --name-only --diff-filter=A origin/develop my-branch | grep "\/migrations\/[0-9]"

일치하는 항목을 모두 셀 수 wc -l는 있지만 디렉터리를 모두 셀 수는 없습니다.

불행히도 Google과 Stack을 사용해도 막혔습니다.

이 주제에 대한 생각이 있나요?

답변1

노력하다,

git diff --color --name-only --diff-filter=A origin/develop my-branch \
    | grep '/migrations/[0-9]' \
    | cut -d/ -f4 \
    | sort \
    | uniq -c

필요에 따라 (여기: )의 필드 번호를 조정합니다 cut.4

산출:

  2 app1
  1 app2

답변2

이것은 작동합니다:

$ for folder in *; do echo "$folder: "; \
    find ./$folder -type f | wc -l; done | grep -A 1 "some/path/"`

관련 정보