我有这个脚本,可以轻松移动到文件夹中。
我的问题是,如果我搜索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
}
答案 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)
find
查找名称为$ 1 cnt
变量计算编号。 " /"在路径中。sort -g
根据cnt
变量对输出进行排序。head -1
返回排序列表中的第一项,即"最低"匹配。答案 1 :(得分:0)
我的问题有点不清楚。正在寻找像
这样的东西cd "$(find . -depth -type d -name "$1" -print -quit)"
将以dfs顺序遍历目录,并将cd
遍历到它找到的第一个匹配$1
。