【问题标题】:why isnt it piping to the cd command? [closed]为什么它不管道到 cd 命令? [关闭]
【发布时间】:2019-12-29 18:56:44
【问题描述】:

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

谢谢!

find -size 1033c | cd

【问题讨论】:

  • 因为cd 忽略标准输入
  • 这只有在第二个命令从标准输入读取时才有效,在这种情况下不是这种情况,并且第二个命令不会在单独的环境中执行。
  • 如果你想对'find'检索到的所有文件进行操作,那么使用find -size 1033c -exec cd {} \;
  • @Krishnom - 不,那是行不通的。这将更改子进程中的目录...这将立即退出!

标签: linux bash


【解决方案1】:

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

最接近您的命令(字面意思)尝试执行的操作是:

cd `find -size 1033c`

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

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


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

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

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

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

【讨论】:

  • 谢谢!有没有办法找到文件目录?
猜你喜欢
  • 2016-03-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-08-21
  • 2014-06-19
  • 2020-07-18
相关资源
最近更新 更多