尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

利用关联数组实现文件所有者统计脚本详解

利用关联数组实现文件所有者统计脚本详解
📅 发布时间:2026/7/12 1:16:16

引言

在bash脚本编程中,关联数组(associative array)是一种非常强大的数据结构,它允许我们使用字符串作为索引,实现类似于哈希表的功能。在处理需要根据键进行快速查找和统计的场景时,关联数组能够显著简化代码逻辑。本文将通过一个完整的实战脚本array-2,详细讲解如何利用关联数组统计一个目录下所有文件的所有者和组所有者,并输出格式化且排序后的结果。

1. 脚本功能预览

array-2脚本接收一个目录作为参数,遍历该目录下的所有文件,提取每个文件的属主(owner)和属组(group),然后输出每个文件及其属主和属组信息,最后分别统计每个属主和每个属组拥有的文件数量。输出结果按字母顺序排序,便于阅读。

以下是针对/usr/bin目录运行脚本的示例输出(已做精简):

/usr/bin/2to3-2.6 root root /usr/bin/2to3 root root ... /usr/bin/zsoelim root root File owners: daemon : 1 file(s) root : 1394 file(s) File group owners: crontab : 1 file(s) daemon : 1 file(s) ... root : 1380 file(s)

2. 关联数组的声明与初始化

在bash中,关联数组必须使用declare -A显式声明,否则会被当作普通数组(普通数组只能使用整数索引)。在脚本的第5行,我们一次性声明了五个关联数组:

declare-Afiles file_group file_ownergroupsowners
  • files:键为文件名,值为文件名本身,用于后续遍历。
  • file_group:键为文件名,值为该文件所属的组。
  • file_owner:键为文件名,值为该文件的属主。
  • groups:键为组名,值为属于该组的文件数量。
  • owners:键为属主名,值为该属主拥有的文件数量。

3. 检查目录参数与错误处理

脚本的第7-10行检查用户是否提供了一个有效的目录:

if[[!-d"$1"]];thenecho"Usage: array-2 dir">&2exit1fi

如果$1不是目录,则输出用法信息并退出。注意输出重定向到stderr(>&2),符合标准错误处理的惯例。

4. 遍历文件并提取所有者/组信息

第12-20行的for循环遍历指定目录下的所有文件(使用"$1"/*通配):

foriin"$1"/*;doowner="$(stat-c%U"$i")"group="$(stat-c%G"$i")"files

相关新闻

  • 2026长沙本地定制厂家全品类家居服务开放预约活动指南 - 起跑123
  • SSMS 22.7 安装与配置:Windows 10/11 系统 3 步完成,支持 SQL Server 2014+
  • 2026年南京开关柜弧光探头生产厂家综合选择与深度剖析 - 品牌鉴赏官2026

最新新闻

  • 锂离子电池组电压平衡方案:MCP3202与PIC18LF4620应用
  • 2026工业智能体落地服务商选型参考盘点|制造业数字化落地深度评测指南 - 互联网科技品牌测评
  • [具身智能-571]:具身智能边缘计算平台的本质是USB接口配置了额外眼、脚、手的Linux主机(CPU + GPU) 吗?
  • Zotero 7.0 插件生态实战:3款必备插件提升文献管理效率 200%
  • VC++ 2005-2022 运行库全版本解析:从 msvcp140.dll 到 vcomp110.dll 的版本映射表
  • 深度学习实战:CNN、RNN、Transformer、GAN八大模型从入门到项目落地

日新闻

  • IX9104 PCIe5.0 高速交换芯片@ACP#完整规格 + 应用场景总结
  • Unity游戏集成Coze智能体:实现NPC智能对话与知识库联动
  • SAP EPIC 建行回单查询:从标准类CL_EPIC_EXAMPLE_CN_CCB_GHTD到Z类的5处关键修改

周新闻

  • IX9104 PCIe5.0 高速交换芯片@ACP#完整规格 + 应用场景总结
  • Unity游戏集成Coze智能体:实现NPC智能对话与知识库联动
  • SAP EPIC 建行回单查询:从标准类CL_EPIC_EXAMPLE_CN_CCB_GHTD到Z类的5处关键修改

月新闻

  • 2026年6月公司网站搭建最新热门渠道测评:四大低成本/零代码平台对比+避坑
  • 【Linux】Linux arm 编译QT程序,出现expected “}“报错
  • 【MATLAB例程】四基站二维AOA定位与距离辅助增强对比仿真。基于角度观测和测距修正的固定目标平面定位精度分析

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号