用于查找目录中所有类型文件及其计数的 Shell 脚本

man*_*m-n 7 linux bash shell perl shell-script

我想写一个shell scriptalias查找目录中不同类型文件的数量。例如,脚本的示例输出应该是:

*.h      20
*.c      40
*.cpp    10
Makefile 3
Run Code Online (Sandbox Code Playgroud)

slh*_*hck 8

find . -type f -name '*.*' -exec sh -c 'echo ${0##*.}' {} \; | sort | uniq -c | sort -nr
Run Code Online (Sandbox Code Playgroud)

echo ${0##*.}给你的文件的扩展名。我们将输出通过管道传输到sort,然后使用 计算唯一行uniq

一些补充:

  • 由于 的输出uniq未根据出现次数排序,因此-nr如果您希望对它进行排序,则必须再次通过管道输入数字排序 ( )。
  • 如果您只想搜索当前目录,请添加-maxdepth 1到您的find命令中。
  • 插入awk '{print $2, $1}'以显示扩展后的计数。