当前位置: 首页 > news >正文

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

引言

在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
http://www.jsqmd.com/news/1170835/

相关文章:

  • 还在愁论文框架搭不好?9款AI论文工具一键生成逻辑连贯初稿!
  • 2026年南京开关柜弧光探头生产厂家综合选择与深度剖析 - 品牌鉴赏官2026
  • 国家中小学智慧教育平台电子课本解析工具:3分钟获取教学资源的终极解决方案
  • 2026年周口企业宣传片制作公司排行榜:会议活动拍摄|视频直播服务商TOP榜单 - 政企影像扫地僧
  • SSMS 22.7 安装与配置:Windows 10/11 系统 3 步完成,支持 SQL Server 2014+
  • 2026年7月最新温州雅典官方售后客服电话及服务网点地址查询 - 亨得利官方服务中心
  • Windows更新修复终极指南:如何彻底解决更新卡顿问题
  • 你是不是想知道,R语言为什么能成为医学数据分析的重要工具?
  • 2026年重庆展柜厂家推荐榜单:展厅/特产/服装/烟酒/中医馆/珠宝等各行业展柜深度解析与口碑之选 - 甄选服务推荐
  • RIP v2 源端鉴别实战:3步配置HMAC-SHA256,阻断伪造路由攻击
  • 鸿蒙ArkUI实战:用List和ForEach渲染可交互的待办任务卡片
  • 2026年商丘企业宣传片制作公司排行榜:会议活动拍摄|视频直播服务商TOP榜单 - 政企影像扫地僧
  • 2026年7月最新太原劳力士官方售后客服电话及服务网点地址查询 - 劳力士官方服务中心
  • 储能电缆厂家选型参考 5家合规企业技术与产能盘点 - 互联网科技品牌测评
  • 终极指南:3步破解VMware限制,在普通PC上运行macOS虚拟机
  • 数字人0-99元能试到什么,100-300元能买到什么,300元以上还要补什么?预算分档别再脱离使用阶段
  • OpenHarmony API23 完整版课程设计项目
  • MP4、AVI、MKV 3大容器格式对比:编码兼容性、流媒体支持与封装效率实测
  • 网络弱网测试搭建与场景模拟
  • CVB:上半年全国上星频道电视剧每日户均观看时长79分钟
  • Vulkan进阶系列21 - Vulkan 1.1 API 一览
  • 2026四川青少年素质学校行业合规机构参考名录 - 起跑123
  • 从零手写Mini-Transformer:7层模块逐行实现,彻底搞懂QKV、RoPE、FlashAttention原理,不依赖HuggingFace
  • TOA协议伪造与检测实战:Python scapy 模拟攻击与3种防御方案验证
  • Selenium 4.18.1 + Chrome 122 环境配置:3种路径设置方案与版本匹配避坑
  • 宝珀官方售后服务中心完整地址与热线实地考察报告_多信源验证(2026年7月更新) - 宝珀官方售后服务中心
  • 2026年威海企业宣传片制作公司排行榜:会议活动拍摄|视频直播服务商TOP榜单 - 政企影像扫地僧
  • 2026 年新发布:丰宁比较好的废钼片高价上门回收平台哪家可靠,别扔!那堆旧钼片在行家眼里,竟是能换半台冰箱的硬通货 - 实业推荐官【官方】
  • 2026年6月金属打印厂家评测:实力对比与选型参考 - 起跑123
  • 通信协议设计中的防混淆策略:从军事数字读法到 7 个软件命名原则