Điều này một lót có vẻ là một phương pháp khá mạnh mẽ:
find . -type f -printf '%f\n' | sed -r -n 's/.+(\..*)$/\1/p' | sort | uniq -c
Bản find . -type f -printf '%f\n'
in tên cơ sở của mọi tệp thông thường trong cây, không có thư mục. Điều đó giúp loại bỏ việc phải lo lắng về các thư mục có thể có .
trong thư mục của bạn sed
.
Việc sed -r -n 's/.+(\..*)$/\1/p'
thay thế tên tệp đến chỉ với phần mở rộng của nó. Ví dụ, .somefile.ext
trở thành .ext
. Lưu ý ban đầu .+
trong regex; điều này dẫn đến bất kỳ trận đấu nào cần ít nhất một ký tự trước phần mở rộng .
. Điều này ngăn tên tập tin như .gitignore
bị coi là không có tên nào cả và phần mở rộng '.gitignore', đây có thể là điều bạn muốn. Nếu không, thay thế .+
bằng a .*
.
Phần còn lại của dòng là từ câu trả lời được chấp nhận.
Chỉnh sửa : Nếu bạn muốn một biểu đồ được sắp xếp độc đáo ở định dạng biểu đồ Pareto , chỉ cần thêm một biểu đồ khác sort
vào cuối:
find . -type f -printf '%f\n' | sed -r -n 's/.+(\..*)$/\1/p' | sort | uniq -c | sort -bn
Đầu ra mẫu từ cây nguồn Linux được xây dựng:
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