列出目录中所有带扩展名的文件,并给出 Unix 中每个此类文件的数量

list all files with extensions in a directory and give count of each such files in Unix

我需要任何特定目录 (/home/docs/) 中的所有文件,每个此类文件的数量按其扩展名分类。

输出应该是这样的:

.mp3 - 10 
.ksh - 15 
.doc - 20 
.xls - 3

等等

ls | awk -F . '{print $NF}' | sort | uniq -c | awk '{print ,}'

我会做:

ls -1|awk -F'.' 'NF>1{a[$NF]++}END{for(x in a)print x,a[x]}'

这将排除没有 dot 的目录和文件名,也使用单个 awk 进程。

$ find . -name "*?.*" -type f -printf "%f[=10=]" | xargs -0 -I"--" sh -c 'fn="--" ; echo "${fn##*.}"' | sort | uniq -c | awk '{print ,"-",}'