为什么不通过管道传递到cd命令?

时间:2019-08-25 05:10:26

标签: linux bash

我读到,如果您使用|命令,然后将第一个命令的输出传递给第二个命令的输入,那么为什么它起作用?

谢谢!

find -size 1033c | cd

1 个答案:

答案 0 :(得分:4)

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

(实际上)最接近您的命令尝试执行的操作是:

cd `find -size 1033c`

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

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


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

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

如果可能存在多个匹配项,则需要执行类似的操作...,该操作应与第一个匹配文件一起cd到目录。

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