arrays - 将目录名称和大小读入关联数组
问题描述
我想将指定目录的所有目录的名称和大小[在顶层] 放入一个关联数组中,以便将名称用作键,将大小用作值。
我知道我可以用来mapfile
将命令的输出(这会提取目录大小)读取到索引数组中:
mapfile -t inter_arry < <( du -d0 "$completePath"* | sed -E 's/^([0-9]*).*$/\1/' );
(然后我会遍历这个数组并使用它来填充关联数组。)
我知道我可以创建一个匹配的数组并用目录名称填充它(尽管无法知道命令之间的内容是否发生了变化),但是如何通过修改我的代码来提取大小和名称片段?
有没有办法跳过中间索引数组?
解决方案
如果有很多项目,它会更快,虽然不是更漂亮,以避免循环。这里我使用du | awk
创建数组初始化字符串:
declare -A ARR=$(
echo '( '$(
du -d0 "$completePath"* |
awk -F$'\t' '{printf "["$2"]="$1" "}'
)')'
)
如果项目很少(例如,数千或更少),请使用@Inian 建议的循环:
declare -A ARR
while IFS=$'\t' read size name; do
ARR[$name]=$size
done < <(du -d0 "$completePath"*)
推荐阅读
- mysql - sql根据父表求和
- python - 如何从 rsa 加密消息中获取数字
- javascript - 如何使用 js 以编程方式在另一个页面上读取 chrome://discards 的内容?
- react-native - NativeModule:AsyncStorage 与 Expo 为空
- flutter - 根据条件禁用 Flutter 中的图标按钮
- kotlin - 在 Kotlin 中定义枚举结构?
- excel - 你能帮我吗,我怎样才能在excel散点图中添加垂直线
- bash - 检查 nginx 配置测试是否成功作为 bash if 的条件
- sql-server - EF Core 3.1 一对零关系
- python - 如何在python中找到非线性联立方程的数值解?