我正在尝试编写一个函数来遍历文件目录并为我提供最深目录的值。我已经编写了函数,它似乎会转到每个目录,但我的计数器似乎根本不起作用。
dir_depth(){
local olddir=$PWD
local dir
local counter=0
cd "$1"
for dir in *
do
if [ -d "$dir" ]
then
dir_depth "$1/$dir"
echo "$dir"
counter=$(( $counter + 1 ))
fi
done
cd "$olddir"
}
我想要它做的是为函数提供一个目录,比如/home,它会向下搜索其中的每个子目录并找到最深的值。我正在尝试更好地学习递归,但我不确定自己做错了什么。
最佳答案
显然 find 应该用于此目的
find . -type d -exec bash -c 'echo $(tr -cd / <<< "$1"|wc -c):$1' -- {} \; | sort -n | tail -n 1 | awk -F: '{print $1, $2}'
最后,我使用 awk 只打印输出,但如果那是您想要的输出,那么一开始就以这种方式回显会更好。
当然,这并不是说它有助于学习递归。
关于linux - 返回文件树目录深度的递归函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4329369/