将当前目录更改为以标识符为子字符串的目录

将当前目录更改为以标识符为子字符串的目录

我的终端当前位于主目录中,主目录中有一个以“round”为子字符串的目录。有没有办法直接切换到该目录而不输入目录的完整名称?比如不执行:

cd dir_name

或者

cd identifier

为什么以下命令打开辅助提示符而不是更改目录

cd ls | grep identifier

答案1

遗憾的是,使用 bash 无法做到这一点。您可以做的最接近的事情是,如果标识符位于文件名的开头,请按TabBash 自动完成。遗憾的是,如果标识符位于文件名的中间或结尾,这将不起作用,在这种情况下,我建议改用允许这样做的 zsh。

由于两个原因,此命令cd ls | grep identifier没有奏效,首先,您尝试切换到名为 的目录ls,然后将 stdout(为空)通过管道传输到 grep 以查找“identifier”。如果您按照 clement 的建议使用子 shell,则可以解决此问题cd $(ls | grep identifier)。但这有其他问题,ls 输出以列为单位,而 grep 按行工作。因此,如果我尝试在以下输出中 grep“sites”,则会出现以下结果:

➜ ls
autoreviewcomments.user.js  build.sh     build.xml  README.md  src
build.properties            build.sites  dist       SDK
➜ ls | grep sites
build.properties            build.sites  dist       SDK

或者在某些情况下,颜色会妨碍cd,因此必须指定“无颜色”:

cd $(ls | grep --no-color sites)

相关内容