将一个命令的输出作为另一个命令的输入

将一个命令的输出作为另一个命令的输入

我在根目录中搜索了一个文件“portmap”,如下所示:

find -name "portmap"

它给出了文件的位置

.init/...somepath./portmap

现在我想将当前目录更改为端口映射文件的位置并打印当前工作目录。

因此,我考虑将上述位置通过管道传输到 cd。但是,如何用一个命令来完成呢?

请帮忙

答案1

假设find找到一个且只有一个与搜索模式匹配的项,则可以使用

cd "$( dirname "$( find -name "portmap" )" )"

如果您在任何时候想要对上一个命令输出中枚举的目录执行操作,则可以使用

cd "$( dirname "$(!!)" )"

答案2

xargs 命令非常适合此操作,但 shell 中的 cd 命令与之配合不佳。因此,我会使用反引号:

cd `find . -type d -name "portmap"`

相关内容