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

-
3种 Word:doc、doxc、wps -
2种 Excel:xls、xlsx -
.PDF -
.DS_Store(Mac 文件夹显示配置文件)。
-
以上7种类型文件的数量 -
文件夹的数量 -
总文件的数量,用于观察有没有漏统计需要注意的文件 -
在图形界面显示的项目数量,辅助验证数量
![]() |
#!/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 {# 1. 7 种类型的总数total7 = matched# 2. 7 种类型中,去掉 .DS_Store 之后的总数total7_no_ds = matched - ds# 3. 递归统计所有文件夹总数(来自 -v dirs)# dirs 此时包含当前目录 .,如果你想排除当前目录,# 可以在上面的 dir_count 那行就先减 1 再传进来。# 4. Finder 视角的“项目总数”:文件 + 目录finder_items = total7_no_ds + dirsprintf "doc = %d\n", docprintf "docx = %d\n", docxprintf "pdf = %d\n", pdfprintf "wps = %d\n", wpsprintf "xls = %d\n", xlsprintf "xlsx = %d\n", xlsxprintf ".DS_Store = %d\n", dsprintf "total7 = %d\n", total7 # 1. 7 种类型总数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
doc = 10docx = 172pdf = 22wps = 6xls = 6xlsx = 12.DS_Store = 5total7 = 233total7_no_ds= 228dirs = 34finder_like = 262
夜雨聆风
