乐于分享
好东西不私藏

递归统计目录下各种文本类文档数量的脚本

递归统计目录下各种文本类文档数量的脚本

在 AI 帮助下跑通一个脚本。
功能:可以递归统计一个目录中所有子目录下的特定文件。
内容:
  • 3种 Word:doc、doxc、wps
  • 2种 Excel:xls、xlsx
  • .PDF 
  • .DS_Store(Mac 文件夹显示配置文件)。
统计类别:
  1. 以上7种类型文件的数量
  2. 文件夹的数量
  3. 总文件的数量,用于观察有没有漏统计需要注意的文件
  4. 在图形界面显示的项目数量,辅助验证数量
脚本代码如下:
#!/usr/bin/env bashdir_count=$(find . -type d | wc -l)find . -type f -print | awk -v dirs="$dir_count" '{  all++  # 所有文件总数(只算文件)  if ($0 ~ /\.doc$/)             { doc++;    matched++ }  else if ($0 ~ /\.docx$/)       { docx++;   matched++ }  else if ($0 ~ /\.pdf$/)        { pdf++;    matched++ }  else if ($0 ~ /\.wps$/)        { wps++;    matched++ }  else if ($0 ~ /\.xls$/)        { xls++;    matched++ }  else if ($0 ~ /\.xlsx$/)       { xlsx++;   matched++ }  else if ($0 ~ /\/\.DS_Store$/) { ds++;     matched++ }}END {  # 17 种类型的总数  total7 = matched  # 27 种类型中,去掉 .DS_Store 之后的总数  total7_no_ds = matched - ds  # 3. 递归统计所有文件夹总数(来自 -v dirs)  #    dirs 此时包含当前目录 .,如果你想排除当前目录,  #    可以在上面的 dir_count 那行就先减 1 再传进来  # 4Finder 视角的“项目总数”:文件 + 目录  finder_items = total7_no_ds + dirs  printf "doc         = %d\n", doc  printf "docx        = %d\n", docx  printf "pdf         = %d\n", pdf  printf "wps         = %d\n", wps  printf "xls         = %d\n", xls  printf "xlsx        = %d\n", xlsx  printf ".DS_Store   = %d\n", ds  printf "total7      = %d\n", total7        # 17 种类型总数  printf "total7_no_ds= %d\n", total7_no_ds  # 2. 去掉 .DS_Store 的 7 种类型总数  printf "dirs        = %d\n", dirs          # 3. 递归目录总数  printf "finder_like = %d\n", finder_items  # 4. total7_no_ds + dirs}'
为方便使用,保存到用户可执行代码文件夹中:
/usr/local/bin/os.sh
添加可执行权限:
sudo chmod +x /usr/local/bin/os.sh
之后,在任意目录执行 os.sh 就可以统计此目录各文件及文件夹信息,执行后显示如下:
doc         = 10docx        = 172pdf         = 22wps         = 6xls         = 6xlsx        = 12.DS_Store   = 5total7      = 233total7_no_ds= 228dirs        = 34finder_like = 262
本站文章均为手工撰写未经允许谢绝转载:夜雨聆风 » 递归统计目录下各种文本类文档数量的脚本

猜你喜欢

  • 暂无文章