我正在使用包含很多嵌套文件夹的目录,例如/ path / to / project / users / me / tutorial
我找到了一个简洁的方法来浏览文件夹: https://superuser.com/questions/449687/using-cd-to-go-up-multiple-directory-levels
但我想知道如何顺其自然。这看起来要困难得多,但有关目录结构的一些帮助。每个目录中只有另一个目录,或者可能是目录和自述文件。
我正在寻找的目录看起来更像传统项目,并且可能包含随机目录和文件(当然比其他任何更高级目录更多)。
现在我正在使用呃...递归bash函数cd进入下面的唯一目录,直到有0或2+目录循环。这还不行..
我是否过于复杂?我觉得使用find会有一些甜蜜的解决方案。理想情况下,我希望能够输入类似的内容:
down path
其中path是顶级文件夹。这将把我带到底部文件夹教程。
答案 0 :(得分:1)
有一个名为CDPATH
的环境变量。 cd
使用此变量的方式与搜索路径名时可执行文件使用PATH
的方式相同。
例如,如果您有以下目录:
/path/to/project/users/me
/path/to/project/users/me/tutorial
/path/to/project/users/him
/path/to/project/users/him/test
/path/to/project/users/her
/path/to/project/users/her/uat
/path/to/project/users/her/dev
/path/to/application
/path/to/application/conf
/path/to/application/bin
/path/to/application/share
export CDPATH=/path/to/project/users/me:/path/to/project/users/him:/path/to/project/users/her:/path/to/application
cd tutorial
之类的简单命令会搜索tutorial
的上述路径。
让我们假装/path/to/application
下面有目录,conf
,bin
,share
。只要前面没有任何路径有cd conf
目录,简单/path/to/application/conf
就会将您发送到conf
。此行为类似于PATH
中的可执行文件。第一次出现总是被选中
答案 1 :(得分:0)
我的尝试 - 这实际上现在有效!我仍然担心它可能很容易通过符号链接或其他一些方式变得无限。
另外,我必须像这样运行
. down
从第一个空文件夹中。
#!/bin/bash
function GoDownOnce {
Dirs=$(find ./ -maxdepth 1 -mindepth 1 -type d)
NumDirs=$(echo $Dirs | wc -w)
echo $Dirs
echo $NumDirs
if [ "$NumDirs" = "1" ]; then
cd $Dirs
GoDownOnce
fi
}
GoDownOnce
答案 2 :(得分:0)
一位朋友还建议这个甜蜜的一个班轮:
cd $(find . -type d -name tutorial)
不可否认,这并不是我所要求的,但它可以很好地完成工作。