首页 > 解决方案 > 为什么它不管道到 cd 命令?

问题描述

我读到如果你使用 | 命令然后它将第一个命令的输出通过管道传输到第二个命令的输入,那么它为什么会起作用?

谢谢!

find -size 1033c | cd

标签: linuxbash

解决方案


cd命令不读取标准输入,因此您通过管道传递给它的任何内容都将被忽略。

最接近您的命令(字面上)试图做的将是:

cd `find -size 1033c`

...除了您可能会“cd”到一个文件(这将失败!)或找不到具有该大小的目录...导致您(无声地)cd-ing到用户的主目录。

而且您的find命令也缺少要搜索的目录!


根据您的评论,您正在尝试访问包含具有给定大小的文件cd的目录。如果我们可以假设只有一个这样的文件,那么以下应该可以工作:

FILE=`find . -size 1033c -type f` 
cd `dirname $FILE`

如果可能有多个匹配项,那么您需要执行类似的操作...应该 cd 到具有第一个匹配文件的目录。

FILE=`find . -size 1033c -type f -print -quit` 
cd `dirname $FILE`

推荐阅读