이 one-liner는 상당히 강력한 방법으로 보입니다.
find . -type f -printf '%f\n' | sed -r -n 's/.+(\..*)$/\1/p' | sort | uniq -c
find . -type f -printf '%f\n'
인쇄없는 디렉토리와 트리의 모든 일반 파일의 기본 이름. 그건있을 수 있습니다 디렉토리에 대해 걱정할 필요가 없습니다 .
당신에 그들 년대를 sed
정규식.
는 sed -r -n 's/.+(\..*)$/\1/p'
단지의 확장으로 들어오는 파일 이름을 바꿉니다. 예를 들면, .somefile.ext
이된다 .ext
. .+
정규식 의 이니셜 에 유의하십시오 . 이로 인해 확장자 앞에 적어도 하나의 문자가 필요 .
합니다. 이렇게하면 파일 .gitignore
이름에 이름이 전혀없고 확장자가 '.gitignore'(예 : 원하는 것)로 취급되지 않습니다. 그렇지 않은 경우, 교체 .+
로모그래퍼 .*
.
나머지 줄은 허용 된 답변에서 나온 것입니다.
편집 : 파레토 차트 형식 으로 멋지게 분류 된 히스토그램을 원한다면 다른 sort
끝에 히스토그램을 추가하십시오 .
find . -type f -printf '%f\n' | sed -r -n 's/.+(\..*)$/\1/p' | sort | uniq -c | sort -bn
빌드 된 Linux 소스 트리의 샘플 출력 :
1 .1992-1997
1 .1994-2004
1 .1995-2002
1 .1996-2002
1 .ac
1 .act2000
1 .AddingFirmware
1 .AdvancedTopics
[...]
1445 .S
2826 .o
2919 .cmd
3531 .txt
19290 .h
23480 .c