更改目录 (cd),但仅替换路径的一部分

更改目录 (cd),但仅替换路径的一部分

不确定这是否可行,但我似乎记得以前使用 AIX 时,只要说出路径的哪一部分需要用其他内容替换,就可以更改路径。例如,假设我有两条路径:

/etc/application-2.0.1/options/default

/etc/application-1.0.8/options/default

我可以使用以下命令从文件夹 1 切换到 2

cd /2.0.1/1.0.8/

这会将路径中的字符串替换2.0.11.0.8。显然,这现在对我来说不起作用。但是有办法做到这一点吗?

答案1

如果你使用作为 shell,您只需输入cd 1.0.8 2.0.1

答案2

我自己也使用过(但很怀念)这个功能。这取决于您使用的 *nix 版本和/或版本。如果您使用 bash,这里有一个方便的方法来扩展内置 cd 以包含此功能。将其放入您的 .bashrc 中(或将其粘贴到您的 bash shell 中并按回车键进行测试)。

function cd() { if [ $# -eq 2 ]; then builtin cd "${PWD/$1/$2}"; else builtin cd "$1"; fi }

答案3

这应该可以在 ubuntu 10.04 上的 bash 中工作:cd ${PWD/old/new}。基本上,这会替换old当前工作目录下面有new2 个例子。

示例 1

ing02741@hoster:~$ cd /home/ing02741/Videos/
ing02741@hoster:~/Videos$ cd ${PWD/ing02741/koushik}
ing02741@hoster:/home/koushik/Videos$ 

示例 2

ing02741@hoster:~/src/cdtest$ mkdir dir-v1.0.1 dir-v2.2.2 dir-v3.0.7
ing02741@hoster:~/src/cdtest$ mkdir dir-v1.0.1/ind dir-v2.2.2/ind dir-v3.0.7/ind
ing02741@hoster:~/src/cdtest$ cd dir-v1.0.1/ind/
ing02741@hoster:~/src/cdtest/dir-v1.0.1/ind$ cd ${PWD/1.0.1/2.2.2}
ing02741@hoster:~/src/cdtest/dir-v2.2.2/ind$ 

借鉴 sepp2k 的答案的想法,你可以制作这样的功能

function mycd { cd ${PWD/$1/$2} }

然后使用类似的东西mycd 2.0.1 1.0.8来切换。

答案4

如果您是 vi 粉丝,您可以在 shell 中启用 vi 模式(例如 bash set -o vi)并使用 vi 的命令模式...

或者你可以进行疯狂的历史扩展(在 zsh 中测试,也许在 bash 中也测试过):

$ cd /etc/application-1.0.8/options/default
cd: no such file or directory: /etc/application-1.0.8/options/default

$ !!:s/1.0.8/2.0.1/
cd /etc/application-2.0.1/options/default
cd: no such file or directory: /etc/application-2.0.1/options/default

相关内容