#!/bin/bash pwd='' declare -A tree out="$(while read line; do IFS=' ' if [[ "$line" == '$'* ]]; then if [[ "$line" == *'cd'* ]]; then fsd=($line) if [[ ${fsd[2]} == '..' ]]; then pwd="$(sed -E 's/\/[a-z]*$//' <<< "$pwd")" else pwd="$pwd/${fsd[2]}" fi fi else if [[ "$line" != "dir"* ]]; then asd=($line) echo "$pwd/${asd[1]} ${asd[0]}" fi fi done < /tmp/07 | sed 's@//@/@g;s@//@/@g')" last=0 while read line; do item=${line/ */} value=${line/* /} depth=$(($(echo "$line" | grep -o '/' | wc -l)+1)) IFS='/' for (( i=1; i<$depth; i++ )); do owo=($item) cur=$(sed 's@ @/@g;s@$@/@' <<< "${owo[@]:0:$i}") tree[$cur]=$((${tree[$cur]}+value)) echo "adding from $line to $cur" done unset IFS # tree[$item]=$((${tree[$item]}+$value)) done <<< "$out" #declare -p tree sum=0 #for i in ${!tree[@]}; do # y=$(grep -o '/' <<< "$i" | wc -l) # if [[ "$y" == 2 ]]; then # echo "${tree[$i]} $i" # sum=$((sum+${tree[$i]})) # fi #done #echo $sum free=$((70000000-${tree[/]})) echo "free: $free" for i in ${!tree[@]}; do if [[ $((free+${tree[$i]})) -ge 30000000 ]]; then echo "${tree[$i]}" fi done | sort -n | head -n1