linux - 返回文件树目录深度的递归函数

标签 linux bash

我正在尝试编写一个函数来遍历文件目录并为我提供最深目录的值。我已经编写了函数,它似乎会转到每个目录,但我的计数器似乎根本不起作用。

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/

相关文章:

linux - 从配置文件命令运行 tmux 时 iterm 损坏管道

windows - 堆栈增长在 Windows 和 Linux 上如何工作?

git - 如何检查 if/else 中是否存在标签

bash - sed 插入文件内容而不是文件名

node.js - 将参数传递给组合的 npm 脚本

C++ 将 struct hostent.h_addr_list IP 转换为 sockaddr struct

linux - 在 linux 启动时运行脚本

c - IPv4 地址的 inet_aton 规范化

bash - 如何使用 awk 或 sed 递归查找/替换字符串?

regex - 正则表达式不提取组