递归地切换到父目录

4

我经常使用WordPress,编辑样式表时,我的“在终端中打开”命令会在类似以下位置启动我的shell:

/home/user/work/project/wp/wp-content/themes/theme_name/_/inc/scss

我在想是否有简单的方法可以进入这个文件夹:

/home/user/work/project

不需要打出 cd ../../../../../../../ 这样的命令是不是更方便一些?如果有某种方法可以使用通配符,直到达到名为 project 的文件夹,会更好吗?(我知道我可以简单地使用 cd ~/work/project,但我想知道是否可以从当前子文件夹进入其他特定父文件夹)。
在伪代码描述中,我想知道是否有办法“保持回到父级,直到达到第一个名为______的文件夹”的方式。
同样的问题也可以应用于更深层次的搜索,例如,cd **/desired_folder+Tab 可以生成我正在寻找的子文件夹/文件的列表,是否有办法反向进行这样的操作呢?
1个回答

5

我在我的.zshrc文件中有以下内容(感谢Adaephon提供的提示):

# cd to a parent directory
function pcd { cd ${PWD%/$1/*}/$1; }

使用示例

$ pwd
~
$ mkdir -p a/b/c/d/e/f/g/h/i/j/k
$ cd **/k
$ pwd
~/a/b/c/d/e/f/g/h/i/j/k
$ pcd d
$ pwd
~/a/b/c/d

2
如果在当前路径中存在与目标目录同名的多个目录(例如 ~/a/b/c/a/b/c),则始终会进入最上层的那个目录。如果您想要在向上跳转时进入第一个匹配的目录,可以使用 function { cd ${PWD%/$1/*}/$1 } - Adaephon
@Adaephon:谢谢你的提示,我通常不会遇到这种情况,所以我的代码一直运行良好,但是你的解决方案似乎更可靠。 - enrico.bacis

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接