Bash在最深的子文件夹中查找文件夹

时间:2014-09-26 06:26:28

标签: bash find subdirectory

我有这个脚本,可以轻松移动到文件夹中。 我的问题是,如果我搜索tests但该文件夹位于我当前的文件夹和子文件夹中,如果首先搜索子文件夹,它将进入子文件夹中的测试。但它应该总是进入最低的"从子文件夹结构匹配。有什么想法吗?

function f {
  if [[ -d $(find . -name $1 -type d) ]]; then
    cd $(find . -name $1 -type d)
  else
    cd $(find ~ -name $1 -type d)
  fi
}

2 个答案:

答案 0 :(得分:1)

试试这个脚本:

cd $(for each in `find . -name $1 -type d`
do
   cnt=`echo $each | sed 's:[^/]::g' | awk '{print length}'`
   echo "$cnt $each"
done | sort -g | awk '{print $2}' | head -1)


    for循环中的
  • find查找名称为$ 1
  • 的所有目录
  • cnt变量计算编号。 " /"在路径中。
  • sort -g根据cnt变量对输出进行排序。
  • head -1返回排序列表中的第一项,即"最低"匹配。

答案 1 :(得分:0)

我的问题有点不清楚。正在寻找像

这样的东西
cd "$(find . -depth -type d -name "$1" -print -quit)"

将以dfs顺序遍历目录,并将cd遍历到它找到的第一个匹配$1

相关问题