在目录路径中向上搜索以找到特定目录

dwkns

我了解如何递归地搜索文件或目录的层次结构,但无法弄清楚如何搜索层次结构并找到特定的目录。

给定路径和文件,例如这些家伙:

/Users/username/projects/project_name/lib/sub_dir/file.rb
/Users/username/projects/project_name/lib/sub_dir/2nd_sub_dir/3rd_sub_dir/file.rb
/Users/username/projects/project_name/spec/sub_dir/file.rb

如何使用终端:

/Users/username/projects/project_name

注意,我知道下一个目录project_namespec/lib/

鲍巴

纯bash(无子进程生成或其他命令)。根据您希望的灵活性,您可能需要考虑先运行rootdir()function的参数readlink -fn在这里解释

#!/bin/bash

function rootdir {
  local filename=$1
  local parent=${filename%%/lib/*}
  if [[ $filename == $parent ]]; then
    parent=${filename%%/spec/*}
  fi
  echo $parent
}

# test:
#  rootdir /Users/username/projects/project_name/lib/sub_dir/file.rb
#  rootdir /Users/username/projects/project_name/spec/sub_dir/file.rb
#  rootdir /Users/username/projects/project_name/lib/sub_dir/2nd_sub_dir/3rd_sub_dir/file.rb
# output:
#  /Users/username/projects/project_name
#  /Users/username/projects/project_name
#  /Users/username/projects/project_name

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章