我了解如何递归地搜索文件或目录的层次结构,但无法弄清楚如何搜索层次结构并找到特定的目录。
给定路径和文件,例如这些家伙:
/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_name
是spec/
或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] 删除。
我来说两句